js forEach批量下载文件只有第一个下载成功?

作者站长头像
站长
· 阅读数 16

比如我有个文件url的列表urlFiles = ['a','b','c'],当我想下载这三个文件的时候,我使用了下面的代码,但是每次下载只有a下载成功

urlFiles.forEach(item => {
    fetch(item).then(res => res.blob()).then(blob => {
      const a = document.createElement('a')
      a.href = URL.createObjectURL(blob)
      //测试链接console.log(a.href)
      a.download = 'fileName'  // 下载文件的名字
      document.body.appendChild(a)
      a.click()
})
}
回复
1个回答
avatar
test
2024-07-18

自己找到了

const iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.style.height = 0;
iframe.src = url;
// 与前两种方式不同,iframe需要挂载到页面上才能触发请求
document.body.appendChild(iframe);
setTimeout(() => {
  iframe.remove();
}, 1000);

参考:https://juejin.cn/post/691936...

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容