JS多个文件下载

114 阅读1分钟

原理:使用多个iframe下载文件,隐藏这个窗口。

·因为如果使用a标签的话会打开新的标签页,不友好。

·使用location.href,多个下载的时候会取消上一个文件的下载。

export const downloadFiles = (urls: Array<string>) => {
  const iframes = [] as Element[]
  urls.forEach((url, index) => {
    const iframe = document.createElement('iframe')
    iframe.style.display = 'none' // 防止影响页面
    iframe.style.height = '0' // 防止影响页面
    iframe.src = url
    document.body.appendChild(iframe) // 这一行必须,iframe挂在到dom树上才会发请求
    iframes.push(iframe)
  })
  // 5分钟之后删除(onload方法对于下载链接不起作用,就先抠脚一下吧)
  setTimeout(() => {
    iframes.forEach((iframe: Element, index) => {
      iframe.remove()
    })
  }, 5 * 60 * 1000)
  return
}