vue中下载Excel,返回类型为 application/octer-stream、
返回的在浏览器preview看到是一堆乱码,
headers内:
后端返回的是一个Excel文件,前端该如何处理并让界面这边下载下来
downloadFile(query).then(res => {
console.log(res.headers["content-disposition"])
const blob = new Blob([res], { type: 'application/octer-stream,charset=utf-8' });
const fileName = this.fileName
if ('download' in document.createElement('a')) { // 非IE下载
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
} else { // IE10+下载
navigator.msSaveBlob(blob, fileName)
}
})
======================
问题已经解决
设置返回值类型为blob
然后打印返回值,看到blob对象里,res.data才应该是需要处理的文件,所以这里改成
const blob = new Blob([res.data], {type: 'application/vnd.ms-excel;charset=utf-8'});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
responseType: blob
之后就是 blob 了,就不需要再次new Blob
。你只需要吧download改成对的文件名,然后打开的时候就会用excel去解析的