先描述一下场景:项目是 springboot + vue3;想要实现后端返回字节数组(字节流),前端通过axios请求,接收然后通过 blob 对象实现文件下载保存至本地(axios 请求中已配置 responseType: 'blob' );
现在遇到的问题就是后端无论返回什么字节数组内容,前端收到之后下载到本地内容都与原文件内容不相同;
于是我就写了一个测试的接口,返回的数据也很简单 -> byte[] bytes = {1,2,3,4,5,6,7,8,9}; return bytes;
然后通过 swagger 接口看到的返回内容是这样的图1(这里用的是公司的电脑);
把这一串字符串按字节流读出来也不是原数组内容;所以每次下载出来的二进制文件内容都不对;请问这是什么原因呀?
但是回家后用自己电脑同样的环境一模一样的代码,跑了一遍完全正确前端接受到的字节正确,然后通过字节流读出来的内容也完全和原数据相同;不过swagger中返回形式不一样,内容我看不见也不知道是否相同如图2(最后补充一下 公司里axios版本是0.18.0,家里的axios版本比较新是 1.5.1,浏览器用的都是Microsoft Edge115,用火狐浏览器也试过了一样不行,应该不是浏览器的问题)各位请帮忙解决一下。
图1 如下所示->
图2 如下所示->
后端接口,如下图所示->
前端请求,如下图所示->