前端多文件下载的问题?
接口可能返回1个或者2个下载地址,key1肯定有,key2有值时下载,遇到的问题是只弹出key2的下载框
// 获取下载地址接口async onClickDownloadBtn(row) {
const res = await returnGoodsDownload({ id: row.id })
this.downloadFun(res.data.key1)
if (res.data.key2) {
this.downloadFun(res.data.key2)
}
},
//下载方法
downloadFun(url) {
console.log(url)
const filename = decodeURIComponent(url.split('/').reverse()[0])
const a = document.createElement('a')
a.download = filename
a.href = url + (filename.indexOf('pdf') !== -1 ? '?response-content-type=application/octet-stream' : '')
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
回答:
测试了一下应该是你使用a链接现在的原因, 他应该是只下载了最后一个链接, 使用iframe 下载, 这个方法参考一下:
/** * 以iframe的方式实现的多文件下载
* @param { urls:array } - 需要下载的内容的数组列表,可以只有一条数据。
*/
export const dnLoadMultipleFiles = (urls) => {
if (typeof urls !== 'object' || urls.length === 0) return
urls.forEach(item => {
const iframe = document.createElement('iframe')
iframe.style.display = 'none' // 防止影响页面
iframe.style.height = 0 // 防止影响页面
iframe.src = item
document.body.appendChild(iframe) // 这一行必须,iframe挂在到dom树上才会发请求
// 5分钟之后删除(onload方法对于下载链接不起作用,就先这样吧)
setTimeout(() => {
iframe.remove()
}, 5 * 60 * 1000)
})
}
以上是 前端多文件下载的问题? 的全部内容, 来源链接: utcz.com/p/933651.html