关于如题
场景需要下载软件的时候,将关联的附件按顺序下载下来。刚开始全部用
window.location.href = “api/downloadSoftware?id=” + id;
直接url的方式只能下载最后一个文件。其他的文件全部没有下载下来。
搜索了一下先发现一个方案:
- 可以下载到部分 但是还是偶尔会漏掉一两个(快的情况下)
https://blog.csdn.net/qq_35005735/article/details/120055283
虽然不行 但是我还是贴一下吧 大家可以都试一下
var divFrame = window.parent.document.getElementById(docId)
//判断是否存在,如果存在先移除,再重新创建
if (divFrame != null) {
window.parent.document.body.removeChild(divFrame)
}
//重新创建
var iframe = window.parent.document.createElement("iframe");
iframe.setAttribute("id", docId);
window.parent.document.body.appendChild(iframe);
divFrame = window.parent.document.getElementById(docId);
divFrame.src = "api/downloadDoc?id=" + docId;
divFrame.style.display = "none";
- 再 搜索了一下先发现另一个方案 基本适配 这里贴一下实现代码:
https://ask.csdn.net/questions/701013
for (var j = 0; j < arr.length; j++) {
var docId=arr[j];
//在dom树上创建一个a标签
var a = document.createElement('a');
var url = "api/downloadDoc?id=" + docId
//将url赋值给a标签的href属性
a.href = url;
//设置设置下载文件的名称 (这里如果你接口里面输出设置了文件名称,这里设置文件名称将不生效,不设置可能又会触发下载失败)
a.download = docId+'.txt';
a.click();//主动触发a标签点击事件
}
$scope.downloading = true;
window.location.href = "api/downloadSoftware?id=" + id;