使用 cURL 将外部文件保存到我的服务器
Posted
技术标签:
【中文标题】使用 cURL 将外部文件保存到我的服务器【英文标题】:Using cURL to save external files to my Server 【发布时间】:2011-10-29 08:20:07 【问题描述】:我有一个展示开源电影和视频的网站。
我已将 url 保存在 mysql 中,并将视频和图像链接到内容服务器。
但用户抱怨网站速度慢,因为图像是从外部获取的,而且大多数时候 Internet Explorer 甚至不显示图像。
我刚刚了解了 cURL,想将图像和视频保存到我自己的服务器并提供原始网站的镜像。
我在很多地方都有“ curl -O ('') ; ”语法来完成任务,但不知道如何在我的 php 脚本中使用它。
简而言之: 我已经在 mysql 中保存了我的 url 表单。我希望它也将保存文件保存到我的网络服务器上的目录并将文件路径保存到 mysql 中的另一列。
欢迎任何形式的帮助。 提前致谢
【问题讨论】:
【参考方案1】:$local_file = "/tmp/filename.flv";//This is the file where we save the information
$remote_file = "http://www.test.com/filename.flv"; //Here is the file we are downloading
$ch = curl_init();
$fp = fopen ($local_file, 'w+');
$ch = curl_init($remote_file);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_exec($ch);
curl_close($ch);
fclose($fp);
我决定在差不多 7 年后更新这个答案。
对于那些为远程主机启用了copy()
的人,您可以简单地使用:
copy("http://www.test.com/filename.flv", "/some/local/path/filename.flv");
【讨论】:
感谢它完美运行的代码(缺少小错误;在第二行末尾,其他任何人阅读该帖子)。感谢您的代码,它在本地主机上完美运行。现在要在远程主机上测试它。您能否帮我添加一小段代码以添加到我的表单中。这样会生成文件路径和名称( /tmp/filename.flv )并将路径信息保存到 mysql。我可以在表单中获取 $remote_file 并将该信息保存到 mysql。但是仍然无法生成文件名和保存到 mysql 的路径。再次感谢您的回答。 我已经修复了第二行缺少的分号。老实说,我不确定您需要什么,“您能否帮我添加一小段代码以添加到我的表单中”是什么意思? 我需要一个带有表单的完整示例页面来放置 url 信息,并将路径信息添加到数据库并保存文件。我知道要求太多,但我期待您的回答。 300mb+ 的大文件没有被传输 尝试在您的 php 文件顶部添加此代码set_time_limit(0);
。以上是关于使用 cURL 将外部文件保存到我的服务器的主要内容,如果未能解决你的问题,请参考以下文章
发送带有 C# 错误 403 的文件和数据。CURL 没有错误