我在網頁上做了以下操作:單擊元素將一組數據(附加到元素)發送到我的服務器,然後生成一個自定義zip文件:儘管文件大小存在於標題中,但下載文件大小未知
$.post(urlprefix + 'makeZip.php', params, function(data){
window.location = urlprefix + 'getZip.php?file=' + data; //get file
}).error(handleAJAXError);
makeZip.php
作品只是罰款,並返回(臨時)zip文件,客戶端應該然後下載的名稱。當我想保持我的服務器乾淨我的路線文件通過稱爲getZip.php
另一個腳本執行以下操作:
/* RETURN REQUESTED FILE AND DELETE FROM SERVER*/
$filename = $_GET['file'];
/* TRANSFER FILE CONTENTS */
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="customDownload.zip"');
header('Content-Length: '.filesize($filename));
readfile($filename);
/* REMOVE FILE FROM SERVER */
unlink($filename);
所有的瀏覽器將成功地下載文件,但我現在面臨一個問題:文件可以得到相當大(高達200MB),所以我認爲能夠估計下載需要多長時間會很好。這就是爲什麼我發送Content-Length
標題(指定的文件大小是正確的)。然而,我測試過的所有瀏覽器都告訴我文件大小未知(這可能會導致用戶跳過下載)。
這是我的標題信息的某種問題嗎?這是客戶端問題嗎?我應該使用另一種方法讓客戶端下載文件嗎?
你能不能檢查與提琴手或類似的瀏覽器不首先執行'HEAD'請求獲取文件大小?如果是這樣,您可能需要在獲得該請求時返回相同的信息。 –