下载文件到服务器 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_FOLLOWLOCATIONoption 明确告诉 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的主要内容,如果未能解决你的问题,请参考以下文章

php批量下载图片

从下载script.php链接下载zip文件夹到服务器

PHP下载远程文件

在 PHP 中有没有一种方法可以让服务器直接将文件下载到文件系统? [关闭]

php远程下载文件到本地,并进行编码转换

PHP下载文件