从服务器下载文件

时间:2012-08-20 22:32:43

标签: php header download

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

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

然而,代码并没有告诉浏览器文件的大小。并且它无法输出1 gb等大文件。我希望代码告诉浏览器文件的实际大小,并能够输出大文件

3 个答案:

答案 0 :(得分:1)

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

这样你的代码就不会占用工作线程多年,并且失控计时器不会在你的下载过程中切入(这会让你的用户感到不安)。

btw - 你说的是文件下载,而不是上传 - 这将是用户到服务器。你的标签是错的。

答案 1 :(得分:0)

即使在发送大文件时,

readfile()也不会出现任何内存问题。如果遇到内存不足错误,请确保使用ob_get_level()关闭输出缓冲。

答案 2 :(得分:-1)

header("Content-Length: $value");