js流文件下载excel无法打开,乱码等问题
先打流文件的返回值,如果时这样
首先查看请求的格式
将相应类型responseType设置成'blob'
export function download (params) { return request({ url: '1111', method: 'get', params, responseType: 'blob' }) }
2.类型没有问题之后查流文件的返回结果,如果时这样问题就已经解决了,直接创建a标签下载就好了
const filestream = res; // 返回的文件流 const blob = new Blob([filestream], {type: 'application/vnd.ms-excel'}); const a = document.createElement('a'); const href = window.URL.createObjectURL(blob); // 创建下载连接 a.href = href; a.download = '下载' document.body.appendChild(a); a.click(); document.body.removeChild(a); // 下载完移除元素 window.URL.revokeObjectURL(href); // 释放掉blob对象
此时可能通过
将new Blob([data], {type: 'application/vnd.ms-excel'})) 改为了:new Blob(['\uFEFF' +data], {type: application/vnd.ms-excel;charset=utf-8'}))
强行让excel可以打开但是内容还是乱码
3.如果更改之后任然乱码,可能是引入了mock.js的原因,因为mock.js会拦截所有响应数据(不管用没用到mock)将响应数据强行转换成json格式,导致返回的流文件出现乱码,将引入mock的地方注释掉就能够获取到正常的相应数据了