【axios】 blob文件下载与下载进度监听
1.首先需要去响应器拦截中判断返回对应数据
request.interceptors.response.use(
response => {
const headers = response.headers
if (headers['content-type'] === 'application/octet-stream;charset=utf-8') {
return Promise.resolve(response)
}
return Promise.resolve(response.data)
},
error => {
return Promise.reject(error)
}
)
2.设置和下载生成文件
this.$axios.get('/XX/XX',{
params: params,
responseType: 'blob'
timeout: 60000,
onDownloadProgress: () => {
const value = progressEvent.loaded / progressEvent.total * 100
}
}).then(res=>{
const content = res.data;
const blob = new Blob([content]);
const fileName = '导出文件.zip'
if ('download' in document.createElement('a')) {
const a = document.createElement('a');
a.download = fileName;
a.style.display = 'none';
a.href = window.URL.createObjectURL(blob);
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(a.href);
document.body.removeChild(a);
} else {
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(blob, _this.selected);
} else {
let URL = window.URL || window.webkitURL;
let downloadUrl = URL.createObjectURL(blob);
window.location = downloadUrl;
}
}
})