【问题标题】:cURL + download file via browsercURL + 通过浏览器下载文件
【发布时间】:2012-09-01 18:26:02
【问题描述】:

当我使用 cURL 下载一些文件时,cURL 会将文件打印到浏览器。但我想打开“保存到”浏览器下载窗口。我该怎么做?

$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_POSTFIELDS, "file_name=test.rar");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_exec($c);
curl_close($c);

【问题讨论】:

    标签: php curl download save


    【解决方案1】:
    ini_set('memory_limit','128M');
    $content = curl_exec($c);
    curl_close($c);
    
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=your_file.txt');
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . strlen($content));
    ob_clean();
    flush();
    echo $content;
    flush();
    

    【讨论】:

    • 我遇到内存泄漏致命错误:允许的内存大小为 67108864 字节已用尽
    • 使用ini_set('memory_limit','128M');
    • 所以如果我理解正确,cURL 会下载文件,然后我得到“保存到”窗口?这是为什么呢?
    • 是的。下载后 php 将标头发送到浏览器“下载文件即将到来”,然后输出文件的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多