Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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 受保护下载上的HTTP头_Php_Header_Download - Fatal编程技术网

Php 受保护下载上的HTTP头

Php 受保护下载上的HTTP头,php,header,download,Php,Header,Download,所以我用它来生成和保护我网站上的一些下载链接 我遇到的问题是脚本可以工作,只是不能处理大文件。例如,1GB文件可以完美下载,而7GB文件则不能 评论中有人提到大量下载可能会导致这种情况 目前,我的标题如下所示: header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filenam

所以我用它来生成和保护我网站上的一些下载链接

我遇到的问题是脚本可以工作,只是不能处理大文件。例如,1GB文件可以完美下载,而7GB文件则不能

评论中有人提到大量下载可能会导致这种情况

目前,我的标题如下所示:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($fakefilename) . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($realfilename));
ob_clean();
flush();
readfile($realfilename);
exit;
这表明他们应该看起来更像这样:

header("Content-Disposition: attachment; filename=" . urlencode($file));    
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");             
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.

$fp = fopen($file, "r"); 
while (!feof($fp))
{
    echo fread($fp, 65536); 
    flush(); // this is essential for large downloads
}  
fclose($fp); 
为了我的生命,我不能让它工作。这里有谁熟悉HTTP头并且不能下载大文件而不是小文件


感谢您的帮助。提前谢谢

此错误是由系统PHP_MAX_INT溢出的
filesize
调用引起的,该调用产生的长度小于整个文件的长度。(在32位机器上约为2GB)

只有信任内容长度头而不是文件本身大小的浏览器才会受到影响

解决办法是改变

header("Content-Length: " . filesize($file));


此错误是由系统PHP_MAX_INT溢出的
filesize
调用引起的,该调用产生的长度小于整个文件的长度。(在32位机器上约为2GB)

只有信任内容长度头而不是文件本身大小的浏览器才会受到影响

解决办法是改变

header("Content-Length: " . filesize($file));


“不下载”到底是什么意思?你得到了什么,你没有得到什么?日志文件中有错误吗?能显示一些代码吗?@Pekka웃 抱歉,我修改了一些代码。1KB文件包含什么?以及
头(“内容长度:”.filesize($file))文件返回>2GB?不下载到底是什么意思?你得到了什么,你没有得到什么?日志文件中有错误吗?能显示一些代码吗?@Pekka웃 抱歉,我修改了一些代码。1KB文件包含什么?以及
头(“内容长度:”.filesize($file))文件返回>2GB?都德!!!!你是个超级明星。你他妈的是怎么解决的。太棒了。非常感谢!!!!!您是否知道某些下载过早结束的原因?同一个文件总是失败还是更间歇?实际上两个文件都失败了?在我的机器上运行良好,但我女朋友的机器似乎在下载过程中部分结束。她有什么类型的机器。浏览器操作系统练习!!!!你是个超级明星。你他妈的是怎么解决的。太棒了。非常感谢!!!!!您是否知道某些下载过早结束的原因?同一个文件总是失败还是更间歇?实际上两个文件都失败了?在我的机器上运行良好,但我女朋友的机器似乎在下载过程中部分结束。她有什么类型的机器。浏览器操作系统等