问题描述
||
这是场景。我有一个网页,上面有文件。我选择了两个文件,它们开始下载。一切顺利,但我希望第二个文件仅在第一个文件完成后才自动开始下载。这是我的代码。你们能建议点什么吗?
<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>
解决方法
不幸的是,JavaScript没有办法告诉文件何时完成下载。我可以建议的最佳建议是使用后端服务器根据请求压缩所选文件,然后将ZIP文件夹发送给用户。
至于前端,您可以使用jQuery将请求实时发送到服务器。
至于后端逻辑,我会尝试PHP \的Zip扩展名,该扩展名必须安装在服务器上。服务器将压缩jQuery请求的文件,将ZIP存储在一个临时位置,然后将用户重定向到该URL进行下载。
希望能有所帮助。