目前我正在使用此代码向用户输出文件。
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$or.'');
readfile($file);
然而,代码并没有告诉浏览器文件有多大。而且它不能输出像 1 GB 这样的大文件。我希望代码告诉浏览器文件的实际大小并能够输出大文件
对于大文件,您需要使用分块传输。在大多数情况下,底层 Web 服务器(Apache/Nginx/WHY)将具备执行此操作的功能。我建议你使用它们。
这样,您的代码不会长时间占用工作线程,并且失控计时器不会在您的下载过程中插入(这会使您的用户感到不安)。
顺便说一句 - 你在谈论文件下载,而不是上传 - 那将是用户到服务器。你的标签是错误的。
readfile()
即使单独发送大文件,也不会出现任何内存问题。如果遇到内存不足错误,请确保使用ob_get_level()
.
header("Content-Length: $value");