项目中使用axios做导出excel的时候总是提示格式乱码
解决了很久,网上搜了很多,发现核心是
Blob
,
//在参数中加入blob
request({
url: url,
method: 'post',
data:params,
responseType:'blob'
})
拦截器中加入判断,如果是下载的文件直接返回
service.interceptors.response.use(response => {
if (response.status == 200) {
if(Object.prototype.toString.call(response.data).includes("Blob")) {
// 如果是下载
return response
}
}
...
在结果返回的地方创建文件并导出
if (res.status == 200) {
let fileName = res.headers['content-disposition'].split('=')[1];
let objectUrl = URL.createObjectURL(new Blob([res.data]))
const link = document.createElement('a')
link.download = decodeURI(fileName)
link.href = objectUrl
link.click()
}