位置: IT常识 - 正文

axios请求设置responseType为‘blob‘或‘arraybuffer‘下载时,正确处理返回值(axios请求设置超时时间)

编辑:rootadmin
axios请求设置responseType为‘blob‘或‘arraybuffer‘下载时,正确处理返回值

推荐整理分享axios请求设置responseType为‘blob‘或‘arraybuffer‘下载时,正确处理返回值(axios请求设置超时时间),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:axios请求配置,axios请求设置超时时间,axios请求设置cookie,axios请求设置cookie,axios请求设置cookie,axios设置请求超时,axios response,axios请求设置超时时间,内容如对您有帮助,希望把文章链接给更多的朋友!

问题:调用后台图片接口,后台返回二进制流图片数据格式。前端接收到流后处理数据显示在img标签。

解决:

1、设置axios接收参数格式为"arraybuffer":

responseType: 'arraybuffer'

2、转换为base64格式图片数据在img标签显示:

return 'data:image/png;base64,' + btoa( new Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), '') );

返回的string直接放在img标签src可直接显示

二、设置axios接收参数格式为"blob":axios.post( ExportUrl, Params, { responseType: 'blob' }) .then(function(response) { this.url = window.URL.createObjectURL(new Blob([response.data])); });三、通过a标签下载文件const url = '下载的url链接';const link = document.createElement('a');link.href = url;link.target = '_blank';link.setAttribute('download', 'Excel名字.xlsx');document.body.appendChild(link);link.click();axios请求设置responseType为‘blob‘或‘arraybuffer‘下载时,正确处理返回值(axios请求设置超时时间)

responseType值的类型

值数据类型‘’DOMString(默认类型)arraybufferArrayBuffer对象blobBlob对象documentDocumnet对象jsonJavaScript object, parsed from a JSON string returned by the servertextDOMString

实例 返回值不同情况的处理方式,举例如下:

①、请求设置为 responseType: ‘arraybuffer’, 请求成功时,后端返回文件流,正常导出文件; 请求失败时,后端返回json对象,如:{“Status”:“false”,“StatusCode”:“500”,“Result”:“操作失败”},也被转成了arraybuffer

此时请求成功和失败返回的http状态码都是200

解决方案:将已转为arraybuffer类型的数据转回Json对象,然后进行判断

代码如下

async downloadFile (file) { let res = await this.$axios.post(this.API.order.tradeImpExcle, { responseType: "arraybuffer" }); if (!res) return; try { //如果JSON.parse(enc.decode(new Uint8Array(res.data)))不报错,说明后台返回的是json对象,则弹框提示 //如果JSON.parse(enc.decode(new Uint8Array(res.data)))报错,说明返回的是文件流,进入catch,下载文件 let enc = new TextDecoder('utf-8') res = JSON.parse(enc.decode(new Uint8Array(res.data))) //转化成json对象 if (res.Status == "true") { this.refresh() this.$message.success(res.Msg) } else { this.$message.error(res.Result) } } catch (err) { const content = res.data; const blob = new Blob([content]); let url = window.URL.createObjectURL(blob); let link = document.createElement("a"); link.style.display = "none"; link.href = url; link.setAttribute( "download", res.headers["content-disposition"].split("=")[1] ); document.body.appendChild(link); link.click(); } }

②、请求设置为 responseType: ‘blob’,

解决方案:将已转为blob类型的数据转回Json对象,然后进行判断

代码如下

async downloadFile (file) { let formData = new FormData(); formData.append("allTradesExcelFile", file); let res = await this.$axios.post(this.API.order.tradeImpExcle, formData, { responseType: "blob" }); if (!res) return; let r = new FileReader() let _this = this r.onload = function () { try { // 如果JSON.parse(this.result)不报错,说明this.result是json对象,则弹框提示 // 如果JSON.parse(this.result)报错,说明返回的是文件流,进入catch,下载文件 res = JSON.parse(this.result) if (res.Status == "true") { _this.refresh() _this.$message.success(res.Msg) } else { _this.$message.error(res.Result) } } catch (err) { const content = res.data; const blob = new Blob([content]); let url = window.URL.createObjectURL(blob); let link = document.createElement("a"); link.style.display = "none"; link.href = url; link.setAttribute( "download", res.headers["content-disposition"].split("=")[1] ); document.body.appendChild(link); link.click(); } } r.readAsText(res.data) // FileReader的API }
本文链接地址:https://www.jiuchutong.com/zhishi/295268.html 转载请保留说明!

上一篇:HTML---列表(html列表去掉点)

下一篇:基于Springboot社区疫情防控管理系统 毕业设计-附源码164621(基于springboot的oa)

  • 荣耀50有线耳机如何使用(荣耀50有线耳机怎么连接)

    荣耀50有线耳机如何使用(荣耀50有线耳机怎么连接)

  • 微博群发私信在哪里(微博群发私信给好友圈)

    微博群发私信在哪里(微博群发私信给好友圈)

  • 小米12pro视频美颜怎么开(miui12视频美颜在哪里开?)

    小米12pro视频美颜怎么开(miui12视频美颜在哪里开?)

  • 第一次保存word文档时会弹出什么对话框(word文档忘了保存,如何恢复最近)

    第一次保存word文档时会弹出什么对话框(word文档忘了保存,如何恢复最近)

  •   已下载未安装在哪里找(已下载未安装的应用如何卸载)

      已下载未安装在哪里找(已下载未安装的应用如何卸载)

  • 华为智慧语音怎么卸载(华为智慧语音怎么用)

    华为智慧语音怎么卸载(华为智慧语音怎么用)

  • 电脑屏幕模糊有拖影(电脑屏幕模糊有重影)

    电脑屏幕模糊有拖影(电脑屏幕模糊有重影)

  • 笔记本激活后不支持退货是什么意思(笔记本激活后不能退怎么办)

    笔记本激活后不支持退货是什么意思(笔记本激活后不能退怎么办)

  • 微信通过昵称可以找到要添加的人吗(微信通过昵称可以加人吗)

    微信通过昵称可以找到要添加的人吗(微信通过昵称可以加人吗)

  • oppo出现hd1是什么意思(oppo手机出现hd1)

    oppo出现hd1是什么意思(oppo手机出现hd1)

  • 当前设备已超过账号注册上限(当前设备已超过领奖上限,请更换重试)

    当前设备已超过账号注册上限(当前设备已超过领奖上限,请更换重试)

  • 微信连麦最长时间限制(微信连麦最长时长多少)

    微信连麦最长时间限制(微信连麦最长时长多少)

  • qq添加失败请勿频繁操作是什么意思(qq添加失败请勿频繁操作可以恢复加好友吗)

    qq添加失败请勿频繁操作是什么意思(qq添加失败请勿频繁操作可以恢复加好友吗)

  • 手机gps定位不准怎么办(gps在手机哪个位置能找到)

    手机gps定位不准怎么办(gps在手机哪个位置能找到)

  • powerpoint默认文件名(powerpoint默认的文件名)

    powerpoint默认文件名(powerpoint默认的文件名)

  • 微信云清查是什么(微信云查数据是真的吗)

    微信云清查是什么(微信云查数据是真的吗)

  • word删除试卷密封线模板(word文档怎么删除试卷答案)

    word删除试卷密封线模板(word文档怎么删除试卷答案)

  • 抖音资料年龄怎么取消(抖音年龄怎么改成2019岁)

    抖音资料年龄怎么取消(抖音年龄怎么改成2019岁)

  • vivox27怎么弄面部解锁(vivox27有没有面部)

    vivox27怎么弄面部解锁(vivox27有没有面部)

  • matebook 14何时上市

    matebook 14何时上市

  • 如何关闭小米nfc功能(如何关闭小米nfc通知栏图标)

    如何关闭小米nfc功能(如何关闭小米nfc通知栏图标)

  • 手机录制功能怎么开启(手机录制功能怎么弄的)

    手机录制功能怎么开启(手机录制功能怎么弄的)

  • mp4是用来干什么的(mp4能干啥)

    mp4是用来干什么的(mp4能干啥)

  • qq大学认证怎么点亮(qq大学认证怎么取消)

    qq大学认证怎么点亮(qq大学认证怎么取消)

  • xs是单卡还是双卡(iphone xs是单卡的吗)

    xs是单卡还是双卡(iphone xs是单卡的吗)

  • 安卓手机怎么刷机(安卓手机怎么刷苹果系统)

    安卓手机怎么刷机(安卓手机怎么刷苹果系统)

  • 华为p30水滴屏可以隐藏么(华为p30水滴屏是什么意思)

    华为p30水滴屏可以隐藏么(华为p30水滴屏是什么意思)

  • python基于LBPH的人脸识别操作(lldb python)

    python基于LBPH的人脸识别操作(lldb python)

  • php包装迭代器如何理解(php生成器和迭代器理解)

    php包装迭代器如何理解(php生成器和迭代器理解)

  • 如何确定关联方及关联关系
  • 企业给员工购买社保的规定
  • 股权转让后企业注销个人所得税怎么处理
  • 已申报税额是什么意思可以退吗
  • 金税盘解锁后是否可以直接使用
  • 私车公用报销流程怎么写
  • 应付账款转营业外收入进项税转出
  • 无力支付什么意思
  • 什么是外购类标签
  • 什么情况下要交个人所得纳税
  • 资产盘点的步骤是什么,需要注意哪些细节
  • 外资企业研发中心
  • 汽车保险费可以抵扣吗
  • 建设工程项目融资
  • 付给农民的扶贫款企业如何做账?
  • 运输业增值税专用发票开具要求
  • 公司为什么要成立工会委员会
  • 电子厂税负率一般是多少
  • 小规模纳税人减免增值税会计处理
  • 未达账项做完调节表后怎么处理?
  • 无偿使用房屋
  • 电子汇款收入是什么意思
  • 分户记账
  • 出租包装物和出借包装物的摊销额
  • 加速折旧法和直线折旧法的区别
  • 3%减按2%征收增值税政策
  • 贴现利息由谁承担
  • 房屋及建筑物改造费用
  • 税后利润是股东权益吗
  • vue+element-ui项目
  • it最高工资
  • 最贵的冰箱是多少钱
  • 个体工商户筹集资金的难易程度
  • 非营利组织营利包括哪些
  • 持有至到期投资减值准备
  • cicd框架
  • 小规模纳税人记账需要哪些账本
  • 十四届智能车规则
  • 前端开发工程师是干嘛的
  • 搭建小技巧
  • apk文件包下载
  • 出租房屋收取跨年度的预收租金收入
  • 防伪税控技术服务费订单号怎么查
  • 普通发票添加货品名称步骤
  • 补发以前年度工资
  • 营业额包括成本价吗
  • 集团公司一般怎么称呼
  • 没有金税盘可以开专票吗
  • 什么人可以申请免税
  • 工程施工资产负债表怎么填
  • 残保金申报方式改变时间
  • 半成品可以计入企业产值吗
  • 支付的员工餐费怎么记账
  • 设备租赁公司如何赚钱最快
  • 固定资产抵扣比例
  • 固定资产改变用途折旧处理
  • 内账咋做
  • hyper-v虚拟机无法初始化
  • win7怎么删除win10系统
  • crossfire.exe是什么
  • WIN7系统如何设置表格默认保存位置
  • speedupmypc.exe - speedupmypc是什么进程
  • win10玩cf几分钟无响应
  • 有usb3.0驱动的win7
  • win8应用商店无法使用
  • 麒麟系统怎么执行命令
  • unity获取组件的方法
  • node.js console.log
  • 模拟新浪微博用户注册程序设计
  • android教学
  • 简述javascript的主要特点
  • javascript如何
  • 江西省发票综合服务平台
  • 律师到税务机关调取信息
  • 党费的缴纳是否扣除所得税
  • 4s店买车需要驾驶证吗
  • 如何计算环保税减征政策
  • 消费税的征收范围口诀
  • 朝阳区第六税务所
  • 企业代扣代缴个税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设