总结关于axios下载文件所遇到的问题
- 下载文件通常用a标签跳转url,但是需要手动处理参数,比如加token等,参数过多时不适用
- axios下载通常方式为添加response拦截的方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// contenttype为后端返回的type,可以自定义
if (res.headers && (res.headers['content-type'] === 'application/x-msdownload' || res.headers['content-type'] === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')) {
downloadUrl(res.request.responseURL)
return
}
// download url
const downloadUrl = url => {
let iframe = document.createElement('iframe')
iframe.style.display = 'none'
iframe.src = url
iframe.onload = function () {
document.body.removeChild(iframe)
}
document.body.appendChild(iframe)
}
- 这种方式通过构建iframe来跳转下载