2012-05-05 80 views
0

的文件,我想允许用户下载文件高达1GB的大小,但根据我的代码只有一个113MB的文件,可以下载...如何允许下载1GB

header('Content-type: application/zip'); 

//open/save dialog box 
header('Content-Disposition: attachment; filename="check.zip"'); 

//read from server and write to buffer 
readfile('check.zip'); 

任何人都可以告诉我如何下载更大的文件?

+1

它在哪里告诉你它只能是113MB? – animuson

+0

检查此。它会帮助你http://blog.mayflower.de/archives/136-Make-the-download-of-large-files-with-PHP-and-lighty-very-easy.html – nu6A

回答

0

可以一次读取并回显文件,或者使用类似mod_sendfile的文件,使其不是您的问题。

+0

感谢您的帮助.. – kunal

0

将您的文件写入缓冲区块大小增加到文件的最大值。这会降低资源的利用率,并且您的下载工作正常。

编辑:

使用HTML5 webworkers下载大。 Webworkers在后台工作,因此您可以下载大型文件。

+0

感谢您的帮助 – kunal

4

我想从你说的话中得出一个“内存不足”的错误。发送大文件时

ReadFile的()不会出现内存问题,甚至:

在这种情况下,也许从documentation本说明可能会感兴趣:

注, 在其自己的。如果遇到内存不足错误,请确保输出缓冲已关闭,并且使用ob_get_level()

因此,请检查ob_get_level()并在必要时调用ob_end_flush()以停止输出缓冲。


或者,你可以做这样的事情:

$f = fopen("check.zip","rb"); 
while(!feof($f)) { 
    echo fgets($f); 
    flush(); 
} 

另一种选择是这样的:

header("Location: check.zip"); 

这将浏览器重定向到check.zip文件。由于是下载,现有页面不会受到影响。您甚至可以输出页面的其余部分,向用户说出“您的下载将立即开始”。

+0

感谢您的帮助... – kunal

+0

我的主要问题是,假设服务器是我自己的电脑,我正在测试我的网站wampserver ... 我把我的下载文件放在www目录中的wamp服务器... 当我从浏览器下载该文件,例如130 MB的zip文件。该文件下载成功,但当我想打开该文件与WinRAR显示错误“该文件格式已损坏或不支持”,下载的文件只有38字节,但其实际大小为130 MB – kunal