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的地方注释掉就能够获取到正常的相应数据了

 

posted @ 2022-05-25 21:07  魔露西  阅读(6956)  评论(1编辑  收藏  举报