我从服务提供商的API(Say- 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
)
当我将此下载链接放在我的浏览器上时,它会将其保存到我的本地PC。
现在我的问题 -
我想将这个MP3文件保存在我的主机空间的一个文件夹中,我可以使用JPlayer Audio进一步使用它来播放。
我尝试了file_get_contents()
,但什么也没发生。
提前致谢。
阅读了Ali Answer后,我尝试了以下代码,但仍未完全正常工作。
// 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个字节,即为空。 这里使用的URL是一个下载链接示例,而不是可以直接使用现代浏览器播放的mp3文件。
答案 0 :(得分:2)
函数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);
您应该添加一些错误检查。