2011-05-24 64 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