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 + 通过浏览器下载文件的主要内容,如果未能解决你的问题,请参考以下文章