Я получаю данные из API поставщика услуг (скажем, http://serviceprovider.com
).
Из нескольких параметров один является MP3 скачать Ссылка (пример- http://serviceprovider.com/storage/read?uid=475b68f2-a31b-40f8-8dfc-5af791a4d5fa_1_r.mp3&ip=255.255.255.255&dir=recording
)
Когда я размещаю эту ссылку для загрузки в своем браузере, она сохраняется на моем локальном ПК.
Теперь моя проблема —
Я хочу сохранить этот MP3-файл в одной из папок на моем хостинге, откуда я смогу использовать его для воспроизведения с использованием JPlayer Audio.
я пытался file_get_contents()
, но ничего не произошло.
Заранее спасибо.
После прочтения Али Ответ я попробовал следующий код, но все еще не работает полностью.
// Open a file, to which contents should be written to.
$fp = fopen("downloadk.mp3", "w");
$url = 'http://serviceprovider.com/storage/read?uid=475b68f2-a31b-40f8-8dfc-5af791a4d5fa_1_r.mp3&ip=255.255.255.255&dir=recording';
$handle = curl_init($url);
// Tell cURL to write contents to the file.
curl_setopt($handle, CURLOPT_FILE, $fp);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_HEADER, false);// Do the request.
$data = curl_exec($handle);
// Clean up.
curl_close($handle);
fwrite($fp, $data);
fclose($fp);
Это создало файл download.mp3 на моем сервере, но с 0 байтами, т.е. пустым.
Используемая здесь ссылка является примером ссылки на скачивание, а не mp3-файлом, который можно воспроизводить напрямую с помощью современного браузера.
Функция file_get_contents используется для чтения локальных файлов. У вас есть URL-адрес, и для получения содержимого вам необходимо выполнить HTTP-запрос в вашем скрипте. PHP поставляется с расширением curl, которое предоставляет вам стабильную библиотеку функций для выполнения HTTP-запросов:
http://php.net/manual/en/book.curl.php
Использование curl для загрузки вашего файла может быть сделано так:
// Open a file, to which contents should be written to.
$downloadFile = fopen("download.mp3", "w");
$url = "http://serviceprovider.com/storage/read?uid=475b68f2-a31b-40f8-8dfc-5af791a4d5fa_1_r.mp3&ip=255.255.255.255&dir=recording";
$handle = curl_init($url);
// Tell cURL to write contents to the file.
curl_setopt($handle, CURLOPT_FILE, $downloadFile);
// Follow redirects.
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
// Do the request.
curl_exec($handle);
// Clean up.
curl_close($handle);
fclose($downloadFile);
Вы, вероятно, должны добавить некоторые проверки ошибок.
Других решений пока нет …