背景: vue项目、需要点击导出、向后台发起请求、查询到对该用户的数据、返回二进制文件流、导出为xlsx文件。
1、用 axios请求 并传参
axios({
method: 'post',
url: url, // 请求地址
data:list, // list 传参
// 二进制流文件,一定要设置成blob,默认是json
responseType: 'blob'
}).then(res => {
const link = document.createElement('a')
const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
link.setAttribute('download', `ceshi.xlsx`)
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
})
ps:这个方法用了两个项目请求、都能下载文件、但是其中一个是乱码的。
- 用 iframe get请求
<iframe id="ifile" style="display:none"></iframe>
// 文件导出
handleExport () {
var dom=document.getElementById('ifile');
dom.src= `${this.$url.api}/api?account=${this.loginAccount}&id=${this.id}`
},
3.如果后台直接返回xlsx的访问地址 可以参考之前写的
js文件下载
网友评论