澜色海湾 2023-10-12 20:26 采纳率: 87.5%
浏览 26
已结题

springboot+vue3后端返回字节流,前端接收并通过blob对象生成文件下载保存至本地

先描述一下场景:项目是 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 如下所示->

img

图2 如下所示->

img

后端接口,如下图所示->

img

前端请求,如下图所示->

img

  • 写回答

11条回答 默认 最新

  • 游一游走一走 2023-10-12 20:40
    关注

    你公司的swagger显示的是application/json,你家里的电脑显示的是application/octet-stream,检查下你公司的代码吧,是不返回的byte给拦截了,重写了返回体

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(10条)

报告相同问题?

问题事件

  • 系统已结题 10月22日
  • 已采纳回答 10月14日
  • 创建了问题 10月12日

悬赏问题

  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥15 怎么做商品窗体,完完全全不会
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥15 ANSYS分析简单钎焊问题