js实现单个文件下载,批量下载多个文件

5,649 阅读1分钟

下载单个文件

  1. 最简单的方式
window.open(url, '_blank');
  1. 通过a标签实现
const a = document.createElement('a');
a.href = url; // 文件链接
a.download = name; // 文件名,跨域资源download无效
a.click();
a.remove();
  1. 通过iframe实现
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);

批量下载多个文件

批量下载本质上就是多个文件同时下载,来个循环就搞定了,但是下载方式有三种,应该循环哪个呢?

1. window.open看似最简洁,最完美,然而实际执行时却:

只成功下载了一两个文件,其余的被当作恶意重定向被拦截了

2. 再来康康第二种方式,通过a标签下载

  • 对于同源文件,通过a标签可以实现批量下载能力
  • 跨域文件,同样只成功下载了一两个文件,其余文件请求出现canceled

3. 最后是iframe,它会是全村的希望吗?

成功了!!! 只有一个文件出现安全提示

欢迎关注