以下是该方案。我有一个包含文件的网页。我选择了两个文件然后开始下载。一切都很好但我希望第二个文件只在第一个文件完成时自动开始下载。这是我的代码。你们能提出一些建议吗?
<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>
答案 0 :(得分:2)
不幸的是,JavaScript没有办法告诉文件何时完成下载。我建议的最佳建议是使用后端服务器根据请求压缩所选文件,然后将ZIP文件夹发送给用户。
对于前端,您可以使用jQuery实时向服务器发送请求。
至于后端逻辑,我会尝试PHP's Zip extension,它必须安装在服务器上。服务器将压缩从jQuery请求的文件,将ZIP存储在临时位置,并将用户重定向到该URL以进行下载。
希望有所帮助。