2015-11-26 3 views
1

Хорошо, что все правильно сохраняется, но как я могу получить URL-адрес файла, который я сохраняю?Получение содержимого, хранящегося с файлом_get_contents

$songs = file_get_contents('https://example.com/tracks/'.$id.'/'); 
file_put_contents('./tmp/' . stripslashes(htmlspecialchars($songTitle)) . '.mp3', $songs); 

без вручную того, чтобы получить каждый URL, пожалуйста, обратите внимание, я новый разработчик все еще учусь .. но не то, что я просто не могу повторить в <a href=""></a> ??

Редактировать: ' . stripslashes(htmlspecialchars($songTitle)) . ' Это просто имя файла, который мы скачиваем, ничего важного в этой строке.

+0

ждать ... Вам нужно FilePath или публичный URL? – Tivie

ответ

0

Это зависит от вашей установки, но если ваш скрипт находится в доступном месте снаружи, и вы доверяете $_SERVER клиенту определенных полей, вы можете использовать __FILE__ и $_SERVER, чтобы добиться того, чего вы хотите.

Код ниже предполагает:

  • Ваш сервер не на HTTPS;
  • Файлы в подкаталоге tmp могут быть доступны извне;
  • Вы можете написать письмо в подкаталог tmp.
  • $_SERVER['HTTP_HOST'] и $_SERVER['REQUEST_URI'] можно «доверять».

Попробуйте это:

// This is the only thing you need to set to your taste. 
$dest_rel_path = 'tmp/' . stripslashes(htmlspecialchars($songTitle)) . '.mp3'; 

// This is the final file path in your filesystem. 
// `dirname(__FILE__)` can be replaced with __DIR__ in PHP >= 5.3.0 
// and the str_replace() part makes the code portable to Windows. 
$filesystem_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $dest_rel_path); 

$songs = file_get_contents('https://example.com/tracks/'.$id.'/'); 
file_put_contents($filesystem_path, $songs); 

// This takes the URL that the user requested and replaces the 
// part after the last '/' with our new .mp3 location. 
$req_uri = $_SERVER['REQUEST_URI']; 
$url_path = substr($req_uri, 0, 1 + strrpos($req_uri, '/')) . $dest_rel_path; 
$url = 'http://' . $_SERVER['HTTP_HOST'] . $url_path; 
echo "<a href=\"$url\">This is my link to $songTitle!</a>"; 
+0

@Open Нет проблем! Если бы это было действительно действительно полезно, вы всегда можете выдвигать в дополнение к маркировке как принято :) –

0

Вы не можете, по крайней мере, не напрямую, так как это не так: файловая система не обязательно переводит URL.

Например, в вашем случае вы сохраняете файл в каталоге tmp. Я сомневаюсь, что каталог доступен каким-либо образом внешнему миру, т. Е. Он имеет общедоступный URL-адрес, чем вы можете получить в своем браузере.

+0

Извините, что задал такой вопрос новичку! Я очень признателен, что вы помогаете мне! –

+0

@Откройте вам системный путь к файлу? или публичный URL-адрес, например http://example.com/something/bla.mp3 – Tivie

+0

example.com/something/bla.mp3 - это то, что я ищу, но когда я это делаю, похоже, что не работает с кодом, который вы отображается выше, так или иначе, я могу это сделать, включая весь URL от начала до конца, а не только от/tmp/forward? –

Смежные вопросы