所以我在一些地方和网站上看到过,文件下载似乎没有指定内容长度,因此下载会一直持续到服务器停止发送数据为止。
现在,当我通过PHP脚本发送动态生成的文件进行下载时,我想知道如何使用PHP实现类似的功能。
我做了一些研究,但实际上找不到任何东西。
(作为一个特定的示例:我想让用户下载ZIP文件,同时还在构建它。)
那么,如何在没有服务器端知道它将结束多长时间的情况下创建动态长下载?
答案 0 :(得分:1)
如上所述,您可以跳过发送Content-Length
标题。这个功能可以派上用场:
function force_download($file){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
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: ' . filesize($file)); <--- Don't send length
readfile($file);
}