Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从服务器下载文件_Php_Header_Download - Fatal编程技术网

Php 从服务器下载文件

Php 从服务器下载文件,php,header,download,Php,Header,Download,目前,我正在使用这段代码向用户输出一个文件 header('Content-type: application/octet-stream'); header('Content-Disposition: attachment; filename='.$or.''); readfile($file); 但是,代码没有告诉浏览器文件有多大。而且它不能输出像1GB这样的大文件。我希望代码告诉浏览器文件的实际大小,并能够输出大文件readfile()即使在单独发送大文件时,也不会出现任何内存问题。如果遇

目前,我正在使用这段代码向用户输出一个文件

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

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

readfile()
即使在单独发送大文件时,也不会出现任何内存问题。如果遇到内存不足错误,请确保输出缓冲已关闭,并使用
ob\u get\u level()

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

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

这样,你的代码不会占用一个工作线程很多年,并且在你的下一个下载过程中,这个失控的定时器不会被切断(这会让你的用户感到不安)。p>


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

什么?这不是复制粘贴,我是认真的。请看一下
内容长度
范围
,请参阅。您能否提供有关不处理1G文件的更多详细信息?只要您的文件系统支持,就可以了。您使用的是什么OS和FS格式?啊,是的,当然-
readfile
正在尝试将整个内容加载到RAM中。好的,删除
readfile
,而是打开该文件,并将其手动分块发送出去。Windows。错误为:
致命错误:内存不足。在webb上找到一些信息,他们说我需要将内存限制改为更高,但问题是你不能将其设置为高于128 mb。Ian,如果你喜欢,你可以编辑帖子-如果你看到错误分类的内容,请重新标记。然而,在这种情况下,我比你抢先一步。
:)