2012-05-05 111 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