关于 js循环批量下载文件,使用window.location.href下载,并不能全部下载

关于如题

场景需要下载软件的时候,将关联的附件按顺序下载下来。刚开始全部用
window.location.href = “api/downloadSoftware?id=” + id;
直接url的方式只能下载最后一个文件。其他的文件全部没有下载下来。
搜索了一下先发现一个方案:

 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";
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;
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值