目前我正在使用此代码将文件输出给用户。
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$or.'');
readfile($file);
然而,代码并没有告诉浏览器文件的大小。并且它无法输出1 gb等大文件。我希望代码告诉浏览器文件的实际大小,并能够输出大文件
答案 0 :(得分:1)
对于大型文件,您需要使用分块传输。在大多数情况下,底层Web服务器(Apach / Nginx / WHY)将具有执行此操作的工具。我建议你使用它们。
这样你的代码就不会占用工作线程多年,并且失控计时器不会在你的下载过程中切入(这会让你的用户感到不安)。
btw - 你说的是文件下载,而不是上传 - 这将是用户到服务器。你的标签是错的。
答案 1 :(得分:0)
readfile()
也不会出现任何内存问题。如果遇到内存不足错误,请确保使用ob_get_level()
关闭输出缓冲。
答案 2 :(得分:-1)
header("Content-Length: $value");