async handleExportExcel () {
this.$axo.post({{api}}, data, {
// 默认为json,blob文件导出需要改成blob
responseType: 'blob'
})
.then(response => {
if (response && response.status === 200) {
const data = response.data
const blob = new Blob([data], {
// 这里直接使用response.headers中的content-type, excel为
type: response.headers['content-type']
})
var downloadElement = document.createElement('a')
var href = window.URL.createObjectURL(blob)
downloadElement.href = href
downloadElement.download = 'filename.xls'
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement)
window.URL.revokeObjectURL(href)
}
})
.catch(error => {
console.log('error :>> ', error)
})
}
原因:
由于业务需要,封装了axios请求,这里是this.$axo
, 这里axios请求responseType
默认是json
,为了能够响应blob二进制文件流,这里需要改成blob
,