思路
- 配置响应类型为:responseType: ‘blob’
- 将blob对象转换为url
- 创建一a标签,将其href设置为转换后的url,点击
- 下载后,删除a标签
实现代码
exportExecl () {
let paramsStr = ''
for(let key in this.params){
if(key != 'size' && key != 'page' && this.params[key] != undefined){
paramsStr += (key + '=' + this.params[key] + '&&')
}
}
const token = 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
axios({
method: 'get',
url: process.env.VUE_APP_BASEURL + '/member/report/recharge/excel/export?'+paramsStr,
responseType: 'blob',
headers:{Authorization:token}
}).then(response => {
this.download(response)
}).catch((error) => {
console.log(error)
})
},
download (response ) {
if (!response) {
return
}
let url = window.URL.createObjectURL(new Blob([response.data], {type: 'text/csv'}))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', 'excel.csv')
document.body.appendChild(link)
link.click()
document.body.removeChild(link);
},