从服务器下载文件


Download a file from a server

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

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

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

对于大文件,需要使用分块传输。在大多数情况下,底层web服务器(Apach/Nginx/WHY)都会有这样的功能。我建议你使用它们。

这样,您的代码就不会占用工作线程很长时间,并且运行方式计时器也不会在下载过程中中断(这会让用户感到不安)。

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

readfile()本身不会出现任何内存问题,即使在发送大文件时也是如此。如果遇到内存不足错误,请确保ob_get_level()关闭输出缓冲。

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