2011-05-24 78 views
2

這是場景。我有一個包含文件的網頁。我選擇兩個文件,然後開始下載。所有不錯,但我希望第二個文件只有在第一個完成時纔會自動開始下載。這是我的代碼。你們可以請一些建議嗎?涉及HTML和JS的文件下載

<html> 
<head> 
<script type="text/javascript"> 
var suffix=1; 
function downloadAll(oFrm){ 
    var oChk = oFrm.elements["file"+(suffix++)]; 
    if (oChk){ 
     if (oChk.checked){ 
      location.href = oChk.value; 
      //setTimeout(function(){downloadAll(oFrm)}, 1000); 
     } 
     else{ 
      downloadAll(oFrm); 
     } 
    } 
} 
</script> 
</head> 
<body> 
<form> 
<input type="checkbox" name="file1" id="file1" value="songs/01.mp3" /><label for="file1">1.mp3</label><br /> 
<input type="checkbox" name="file2" id="file2" value="songs/02.mp3" /><label for="file2">2.mp3</label><br /> 
<input type="button" value="Download All" onclick="suffix=1;downloadAll(this.form);return false" /> 
</form> 
</body> 
</html> 

回答

2

不幸的是,當文件完成下載時,沒有辦法讓JavaScript知道。我可以建議的最好建議是使用後端服務器按要求壓縮選定的文件,然後將ZIP文件夾發送給用戶。

至於前端,你可以使用jQuery實時發送請求到服務器。

至於後端邏輯,我會嘗試PHP's Zip extension,它必須安裝在服務器上。服務器會壓縮jQuery請求的文件,將ZIP存儲在臨時位置,並將用戶重定向到該URL以供下載。

希望有所幫助。

+0

非常感謝你幫助我解決這個問題。 – newbee 2011-05-24 23:47:40

+0

如果您不介意,請點擊我答案旁邊的複選標記,除我的答案外。你和我會爲此獲得積分。 :) – 2011-05-25 00:42:48