场景:
将后端传过来的二进制数据转为excel表格导出
问题描述:
前端导出数据代码为:
let blob = new Blob([res.data], {type: 'application/vnd.ms-excel; charset=utf-8'})
let url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.download = 'xxx.xls' //下载的文件名
link.click()
window.URL.revokeObjectURL(url);
用到了Blob.js,使用前确保项目已经安装该插件。
后端接口:
responseType : ‘blob’
在以上代码正确的情况下导出的数据仍为乱码。
原因分析:
项目引入了mock插件。mock.js中会使responseType: ‘ ’,从而导致responseType : ‘blob’无效。
解决方案:
简单点在main.js中注释掉mock的引入;
也可以修改mock.js的源代码。