使用 PHP 从您的主机空间的下载链接中保存 mp3 文件
Posted
技术标签:
【中文标题】使用 PHP 从您的主机空间的下载链接中保存 mp3 文件【英文标题】:Save mp3 file from a download link on your hosting space using PHP 【发布时间】:2014-12-06 11:48:16 【问题描述】:我正在从服务提供商的 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
)
当我将此下载链接放在我的浏览器上时,它会将其保存到我的本地 PC。
现在我的问题 -
我想将此 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 个字节,即为空。 这里使用的url是下载链接示例,不是可以直接用现代浏览器播放的mp3文件。
【问题讨论】:
【参考方案1】:函数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);
您可能应该添加一些错误检查。
【讨论】:
感谢您的回答。它创建文件,但由于某种原因它没有写入任何内容,即我的主机上新创建的 MP3 文件有 0 个字节。我猜请求的网址没有返回任何内容。我说的是下载链接,不是直接播放链接。 cURL 需要跟随重定向。设置 CURLOPT_FOLLOWLOCATION = true 可以解决这个问题。 @sanjayojha 查看您的编辑,您不需要在请求后执行 fwrite。 cURL 为您写入文件。 嗯,这很有趣。此代码适用于您编辑中给出的 URL:gist.github.com/anonymous/fe580c7181cc415c2ff7 对不起,阿里,我没有注意到您用 (curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);) 编辑的答案以上是关于使用 PHP 从您的主机空间的下载链接中保存 mp3 文件的主要内容,如果未能解决你的问题,请参考以下文章
错误“抱歉,我需要一个 wp-config-sample.php 文件才能使用。请从您的 WordPress 安装中重新上传此文件。”
如何使用从您的应用程序外部提供的“文本选择”的新 Android M 功能?