0

目前我正在使用此代码向用户输出文件。

header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$or.'');
readfile($file);

然而,代码并没有告诉浏览器文件有多大。而且它不能输出像 1 GB 这样的大文件。我希望代码告诉浏览器文件的实际大小并能够输出大文件

4

3 回答 3

1

对于大文件,您需要使用分块传输。在大多数情况下,底层 Web 服务器(Apache/Nginx/WHY)将具备执行此操作的功能。我建议你使用它们。

这样,您的代码不会长时间占用工作线程,并且失控计时器不会在您的下载过程中插入(这会使您的用户感到不安)。

顺便说一句 - 你在谈论文件下载,而不是上传 - 那将是用户到服务器。你的标签是错误的。

于 2012-08-20T22:46:19.163 回答
0

readfile()即使单独发送大文件,也不会出现任何内存问题。如果遇到内存不足错误,请确保使用ob_get_level().

于 2012-08-20T22:45:59.103 回答
-1
header("Content-Length: $value");
于 2012-08-20T22:41:30.500 回答