一次下载多个文件的解决思路-JS

在项目中有一个需求用户选中多个文件,然后一起下载

 

  1. 刚开始还想着用ajax来发起请求,但是发现,好像浏览器的下载框就弹不出来了,难道我还要去写个下载框?算了算了果断放弃。
  2. a标签和location.href,我们知道a标签及href指向的如果是一个下载链接,那么相当于下载文件,对于单文件下载还是ok的,不过对于我这个多文件下载来说,明显不满足需求,一个新的链接发起请求,老的链接会被canceled,不行不行

  3. window.open,我们知道window.open可以打开一个新窗口,那么是不是可以实现下载呢,激动的我赶紧试了试,不过会快速打开一个新窗口并且关闭,体验非常不好,而且我这里测试出来好像也不能同时下载多个文件,还是只有一个文件开启下载

  4. iframe,突然想到iframe也可以向服务器发请求的,激动的我又赶紧试了试,哇塞,果然可以下载,而且没有违和感,代码贴出来

for (let i = 0; i < data.length; i++) {
    const iframe = document.createElement("iframe");
    iframe.style.display = "none"; 
    iframe.style.height = 0; 
    // url自己进行指定
    iframe.src = "/disk/api/file/download/" + data[i].id;
    document.body.appendChild(iframe);
    // 不能马上将iframe进行删除,否者也会出现马上取消的情况
    setTimeout(() => {
        iframe.remove();
    }, 5 * 1000);
}

而且iframe方式在chrome和360浏览器下,会提醒是否允许下载多个文件,难道这还是一种非常标准的方式??

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值