【问题标题】:Download file to server PHP下载文件到服务器 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。

标签: php curl roblox


【解决方案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 可能对这项任务有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    相关资源
    最近更新 更多