axios使用post下载Excel文件流乱码

直接上代码

请求

axios({
    url:  '/url',
    responseType: 'blob',
    method: 'post',
    data: {}
  })

响应处理

            const aLink = document.createElement('a');
            //Blob中的type有很多,这里是下载excel中的xlsx
            const blob = new Blob([res],{type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
            aLink.href = window.URL.createObjectURL(blob);
            aLink.setAttribute('download', "excel.xlsx"); // 下载文件名称
            aLink.click();
            window.URL.revokeObjectURL(aLink.href); // 释放URL对象

网上大多数都是这样处理,本应没啥问题
结果问题来了,后端返回的data里是一段乱码的字符串
然后各种尝试,一开始使用了axios.create封装的方法发起的请求,后来怀疑封装影响了,遂改为axios直接发请求,结果还是一样,又怀疑axios也被污染了,改为了fetch发请求,结果成功了,在后端要改接口的最后一刻接口成功下载excel,并且还能正常打开,这就很nice了😀😀😀

然而,疑问来了,why?

又去网上搜,终于发现猫腻
mock模块会影响原生的ajax请求,使得服务器返回的blob类型变成乱码

于是没啥好说的,注释掉mock.js

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容