我是一个严厉的新手,但在发布之前我做了很多研究,所以我希望你能提供帮助。
我正在尝试提供托管在Apache服务器上的大型.zip文件,大约6.4 Gb。该文件在浏览器中显示完整下载,但实际上只下载了大约500Mb。这似乎是一个非常常见的问题,并且在网络上发现了很多其他帖子和信息,但这个问题对我来说一直存在。
Large Zip file offered for download using php
IE download incomplete even though it claims success
Large zip downloads failing only in IE
我一直在使用Chrome 39.0.2171.71进行测试,但我遇到了与FireFox和IE相同的问题。我认为我的文件比其他人发布的文件大得多,因此也许他们的解决方案可以帮助解决问题,但是没有解决根本问题。我有一个大约400Mb的第二个.zip文件,我成功使用相同的http标头。
我发现的最有用的文章是:http://perishablepress.com/http-headers-file-downloads/我已经从该来源复制了下面显示的大部分PHP,因为看起来这个网站上的其他海报已经完成了。
我也尝试过使用X-SendFile,但我不认为我的webhost安装了相应的Apache模块。我花了一整天的时间来完成这项工作,并且已经没想完了!我成功地使用了下载管理器,我不知道这只是偶然或者是什么,但我不想要求我的客户必须下载并安装一个单独的程序才能获得.zip文件。
<?php
// HTTP Headers for ZIP File Downloads
// set example variables
$filename = "huge.zip";
$filepath = "****";
// http headers for zip downloads
// header("X-Sendfile: $filepath$filename");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filepath.$filename));
set_time_limit(0);
ob_end_flush();
@readfile($filepath.$filename);
?>
以下是我运行上面的php时的响应标题
Remote Address:76.162.142.242 Request URL:****/GetSW.php Request Method:GET Status Code:200 OK Request Headers Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding:gzip, deflate, sdch Accept-Language:en-US,en;q=0.8 Authorization:Basic ****** Connection:keep-alive Cookie:_ga=GA1.2.1176828605.1417985823 DNT:1 Host:www.teamursa.org Referer:http://www.teamursa.org/****.html User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Response Headers Cache-Control:public Connection:Keep-Alive Content-Description:File Transfer Content-Disposition:attachment; filename="huge.zip" Content-Length:6720560824 Content-Transfer-Encoding:binary Content-Type:application/octet-stream Date:Sun, 07 Dec 2014 22:16:57 GMT Expires:0 Keep-Alive:timeout=3, max=120 Pragma:public Server:Apache X-Powered-By:PHP/5.2.17
答案 0 :(得分:0)
您可能需要增加服务器的内存限制。在打开PHP标记
之后尝试以下内容 ini_set('memory_limit','16M');
并且从16M继续增长
答案 1 :(得分:-2)
我建议您尝试使用网络浏览器直接下载文件,这意味着您转到存储文件的地址。例如www.example.com/downloads/download.zip希望这有帮助