下载文件到服务器 PHP
Posted
技术标签:
【中文标题】下载文件到服务器 PHP【英文标题】:Download file to server PHP 【发布时间】:2018-05-25 14:07:18 【问题描述】:我要下载的文件位于此处
https://assetgame.roblox.com/Asset/?id=942531514
当您加载链接时,它会自动强制您下载。
我正在尝试找到一种方法让 php 下载文件并将其存储在服务器上供以后使用。
我尝试过 file_get_contents 的 Curl 和 file_put_contents,但都没有奏效。
谢谢!
【问题讨论】:
我点击了 chrome 中的链接,它不会强制下载。它只是一个 json_encoded 数组。 curl 或 file_get_contents 应该可以工作,当与 json_decode 结合使用时,您应该可以很好地获取数据。 我的错,更新了帖子。我不小心放错了链接,我的错。 对不起劳伦斯,我不小心放错了网址。我想要文件,而不是 XML。 【参考方案1】:您的网址使用HTTP Location Redirect,file_get_contents 根本无法理解,这就是为什么file_get_contents 肯定不起作用(警告,file_get_contents 可能失败的另一个原因是allow_url_fopen
php.ini 设置)。 curl 确实理解它,但默认情况下会忽略它,这可能就是您的 curl 代码失败的原因。使用CURLOPT_FOLLOWLOCATION
option 明确告诉 curl 遵循 http 重定向,它应该与 curl 一起使用,例如
$ch = curl_init ( 'https://assetgame.roblox.com/Asset/?id=942531514' );
curl_setopt_array ( $ch, array (
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true
) );
$xml=curl_exec($ch);
var_dump($xml);
【讨论】:
【参考方案2】:这是细分。
您尝试调用的网址:https://assetgame.roblox.com/Asset/?id=942531514
文件所在的url:http://c3.rbxcdn.com/43865ade81ebad6d3493166f3bcfc631
由于服务器在标头中返回强制下载。你可以试试这样:
function download_file($url,$saveto)
$cinit = curl_init ($url);
curl_setopt($cinit, CURLOPT_HEADER, 0);
curl_setopt($cinit, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cinit, CURLOPT_BINARYTRANSFER,1);
$cexec=curl_exec($cint);
curl_close ($cinit);
if(file_exists($saveto))
unlink($saveto);
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
希望这对你有用。
【讨论】:
如何从第一个网址获取第二个图片网址? 我希望this post 可能对这项任务有所帮助以上是关于下载文件到服务器 PHP的主要内容,如果未能解决你的问题,请参考以下文章