0

所以我在一些地方和网站上看到过,文件下载似乎没有指定 Content-Length,所以下载会继续,直到服务器停止发送数据。

现在我想知道当我通过 PHP 脚本发送动态生成的文件以供下载时,如何使用 PHP 实现类似的功能。

我做了一些研究,但实际上找不到任何东西。

(作为一个具体的例子:我想让用户下载一个 ZIP 文件,而它仍在构建中。)

那么,如何在服务器端不知道下载时间长的情况下创建动态长下载?

4

1 回答 1

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);
}
于 2012-08-10T10:48:58.370 回答