使用PHP从托管空间的下载链接保存mp3文件

时间:2014-10-11 11:28:51

标签: php download

我从服务提供商的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文件。

1 个答案:

答案 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);

您应该添加一些错误检查。