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

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 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写