cURL + 通过浏览器下载文件

Posted

技术标签:

【中文标题】cURL + 通过浏览器下载文件【英文标题】:cURL + download file via browser 【发布时间】: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);

【问题讨论】:

【参考方案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 将标头发送到浏览器“下载文件即将到来”,然后输出文件的内容。

以上是关于cURL + 通过浏览器下载文件的主要内容,如果未能解决你的问题,请参考以下文章

php写curl下载文件 不是下载到服务器 让浏览器弹出下载文件,在本地下载 求高手解答

使用 CURL 下载的档案无效

如何与 PHP 并行进行 cURL 下载和输出?

使用 curl (c++) 下载 zip 文件

如何在GitHub正确地使用 Curl 下载文件?

PHP利用Curl实现多线程抓取网页和下载文件