将Curl下载文件直接下载到浏览器而不是先下载到temp?

时间:2014-09-17 20:37:13

标签: php curl browser download

我编写的这段代码确实可以工作并将文件下载到客户端浏览器但是有延迟,因为它首先将文件下载到某种临时目录,然后当它完成时它只是将它传递给客户端。 我不希望这个我想要的文件没有任何延迟地下载。

header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Length: '.filesize');

$chdownload = curl_init();

curl_setopt($ch, CURLOPT_URL, $url]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$data = curl_exec($ch);
curl_close($ch);


echo $data;

1 个答案:

答案 0 :(得分:0)

该文件未下载到临时磁盘位置。您所描述的延迟是由curl_exec()阻止脚本执行的事实引起的,因为它需要等到整个文件下载后脚本才能继续运行。

要在下载数据时访问数据,您需要使用带有curl的流(使用CURLOPT_FILE)用于较旧的curl版本,或者使用带有回调函数的CURLOPT_WRITEFUNCTION用于较新版本的数据卷曲。查看this answer以获取详细解决方案。