第一步在拦截器中设置:
service.interceptors.response.use(
response => {
const headers = response.headers
if (headers['content-type'] === 'application/octet-stream;charset=utf-8') {
return response.data
}
...其他情况
}
)
第二步在axios 请求时设置:
export function exportAudit(query) {
return request({
url: 'xxxx',
method: 'get',
responseType: 'blob',
params: query
})
}
第三步,请求接口返回值时设置:
handleExport() {
exportAudit(this.query).then(response => {
console.log(response)
const blob = new Blob([response.data])
const fileName = 'XXX导出.xlsx'
if ('download' in document.createElement('a')) { // 非IE下载
const elink = document.createElement('a')//创建一个a标签通过a标签的点击事件区下载文件
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)//使用blob创建一个指向类型数组的URL
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
} else { // IE10+下载
navigator.msSaveBlob(blob, fileName)
}
})
}
这样就导出文档流内容了