位置: IT常识 - 正文

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

发布时间:2024-01-14
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)

  • 荣耀手机怎么分屏一半一半(荣耀手机怎么分屏)

    荣耀手机怎么分屏一半一半(荣耀手机怎么分屏)

  • 安卓闲鱼消息不提醒(闲鱼消息不提醒已经设置系统通知打开了)

    安卓闲鱼消息不提醒(闲鱼消息不提醒已经设置系统通知打开了)

  • 苹果13.2.2值得更新吗(苹果13.2值得升级么)

    苹果13.2.2值得更新吗(苹果13.2值得升级么)

  • 淘宝发货无效联系人是什么意思(淘宝商家发货显示发货失败无效联系人)

    淘宝发货无效联系人是什么意思(淘宝商家发货显示发货失败无效联系人)

  • 华为p40打字声音怎么开启(华为p40打字声音怎么关闭)

    华为p40打字声音怎么开启(华为p40打字声音怎么关闭)

  • win7网络共享中心在哪(win7网络共享中心在哪里)

    win7网络共享中心在哪(win7网络共享中心在哪里)

  • 微信三天是小时还是天(微信展示3天)

    微信三天是小时还是天(微信展示3天)

  • 安卓手机越更新越卡吗(安卓手机越更新越卡是真的吗)

    安卓手机越更新越卡吗(安卓手机越更新越卡是真的吗)

  • 华为nova7和荣耀30s对比(华为nova7和荣耀30的区别)

    华为nova7和荣耀30s对比(华为nova7和荣耀30的区别)

  • iphone11充电需要多久(苹果11充电要插好几次)

    iphone11充电需要多久(苹果11充电要插好几次)

  • b站主页有访客记录吗(b站有访客记录)

    b站主页有访客记录吗(b站有访客记录)

  • 抖音不小心刷新了怎么看上个视频(抖音不小心刷新了怎么找上一个视频)

    抖音不小心刷新了怎么看上个视频(抖音不小心刷新了怎么找上一个视频)

  • 天猫超市是同城发货吗

    天猫超市是同城发货吗

  • 网络正常微信发不出去信息是怎么回事(网络正常微信发不出去图片)

    网络正常微信发不出去信息是怎么回事(网络正常微信发不出去图片)

  • 苹果11pro怎么关机(苹果11pro怎么关闭旋转屏幕)

    苹果11pro怎么关机(苹果11pro怎么关闭旋转屏幕)

  • 京东如何重新实名认证(京东怎么更换实名认证)

    京东如何重新实名认证(京东怎么更换实名认证)

  • 哔哩哔哩评论怎么@别人(哔哩哔哩评论怎么复制)

    哔哩哔哩评论怎么@别人(哔哩哔哩评论怎么复制)

  • 京东消息震动怎么取消(京东消息铃声)

    京东消息震动怎么取消(京东消息铃声)

  • 手机停留在开机界面怎么办(手机停留在开机界面无法开机怎么办)

    手机停留在开机界面怎么办(手机停留在开机界面无法开机怎么办)

  • iphone11是typec接口吗(iphone11的typec)

    iphone11是typec接口吗(iphone11的typec)

  • 逆光照片怎么修复(逆光照片怎么修美图秀秀)

    逆光照片怎么修复(逆光照片怎么修美图秀秀)

  • 勿扰模式微信电话会响吗(勿扰模式微信电话会被挂断吗)

    勿扰模式微信电话会响吗(勿扰模式微信电话会被挂断吗)

  • 小黑记事本怎么彻底弄掉(小黑记事本怎么下载)

    小黑记事本怎么彻底弄掉(小黑记事本怎么下载)

  • cun aloo是荣耀几(荣耀alooa是华为什么型号)

    cun aloo是荣耀几(荣耀alooa是华为什么型号)

  • skyworth怎么用手机投屏(skyworth怎么用手机投屏苹果)

    skyworth怎么用手机投屏(skyworth怎么用手机投屏苹果)

  • 微信视频通话怎么调清晰度

    微信视频通话怎么调清晰度

  • 阿里旺旺如何使用(阿里旺旺怎么卖东西)

    阿里旺旺如何使用(阿里旺旺怎么卖东西)

  • 机顶盒如何取消待机(机顶盒如何取消回看)

    机顶盒如何取消待机(机顶盒如何取消回看)

  • 利用vue实现登陆界面及其跳转(vue 登陆)

    利用vue实现登陆界面及其跳转(vue 登陆)

  • 非盈利组织确认及所得税汇算怎么做
  • 缴纳个人所得税怎么算
  • 增值税应交税费和申报的不一样怎么调整
  • 税控服务费全额抵扣增值税申报表中哪一栏
  • 民办学校房屋要求
  • 搬家费账务处理
  • 自产自用的资源税记入
  • 异地工程预缴税有哪些流程
  • 财务费用利息如何结转
  • 药店商品进销差价
  • 典当行借贷属于民间借贷吗
  • 去年已支付的费用怎么查
  • 企业购买的原材料确认为资产,这属于会计确认的范畴
  • 房地产预交税金及附加要计提吗
  • 企业支付的产品广告费应计入什么账户借方
  • 城市维护建设税税率
  • 未计提职工教育经费汇算清缴
  • 短期理财的门槛
  • 土地证是商业用地
  • 经济补偿金如何计税
  • 差旅费住宿专票可以抵扣增值税吗
  • 物业费的进项税额可以抵扣吗
  • 工商年报财务数据怎么填
  • 承租集体土地如何确权
  • Python之ImportError: DLL load failed: 找不到指定的模块解决方案
  • 伊莎贝尔公主
  • php验证电子邮件格式
  • Aerial view of Chapel Bridge over the river Reuss in Lucerne, Switzerland (© Neleman Initiative/Gallery Stock)
  • 电子发票有哪些版本
  • js字符串转换为数字类型
  • 财务费用为什么流向债权人
  • vue全家桶教程
  • js中this指向有几种情况
  • 应收账款与企业价值的关系
  • 原材料存货跌价准备会计分录
  • 小规模免税怎么做账务处理
  • 个人所得税数据怎么导入新电脑
  • 企业收入确认的文章
  • 公司买15万的车可以抵扣多少税
  • mysql数据库操作中,use是用来做什么的?
  • mysql select语句操作实例
  • mysql组合
  • 结算价格的确定原则
  • 外购豆油给送客户好吗
  • 息税前利润的计算公式EBIT
  • 专职独立研发企业是指
  • 海关双抬头进口增值税发票如何抵扣
  • 项目投标代理服务方案
  • 购入农产品的增值税税率是多少
  • 赠送礼品怎么入账
  • 多交的税费申请抵扣下期
  • 已付款未认证发票怎么做账
  • 企业收到免税发票怎么办
  • 收到投资款现金流量
  • 管理费用里包括哪些费用
  • 企业的职工福利费
  • 汇算清缴退费怎么入账
  • 按揭贷款汽车会被抵押吗
  • 用友现金流量明细表
  • 什么是现金流量表分析的重点
  • bios怎么恢复出厂设置教程
  • win7guest账户有密码吗
  • 怎么设置电脑开机启动项
  • mac 地址栏
  • Linux系统安全配置包括
  • centos设置永不待机
  • 电脑开机显示微信号怎么回事
  • 升级linux版本
  • three. js
  • 被人遗忘的明星
  • jquery插件怎么写
  • node js模块
  • js制作网站
  • python3.8.3怎么用
  • jQuery iScroll.js 移动端滚动条美化插件第1/5页
  • js检测类型的方法
  • 长春购房契税税率
  • 北京市国家税务网
  • 粮仓计算公式
  • 河南省土地使用税税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号