位置: 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)

  • 个税申报吗
  • 营业外收入交企业所得税可以扣除成本么
  • 进口环节增值税由海关征收吗
  • 生鲜配送公司财务制度
  • 强制解除财务负责人
  • 个体工商户在哪注销营业执照
  • 消防检测需要资质吗?
  • 滴滴普通发票可以作废吗
  • 增值税汇总纳税政策文件
  • 以资抵债是利空还是利好
  • 租车没有发票怎么入账
  • 新办建筑劳务公司有资质证书吗
  • 工业企业哪些房子要交房产税
  • 专用设备抵免企业所得税目录
  • 当期损益包括营业外收支吗
  • 企业取得的哪些成果
  • 工程施工属于什么会计科目
  • 非关联企业无偿拆借资金企业所得税
  • 银行回单如何做凭证
  • bios中关闭软盘
  • 在建工程人工费会计分录
  • 厂房租金计入什么费用部门
  • 苹果推送ios15
  • 建筑企业如何确认所得税收入
  • 本年利润和利润总额的关系
  • 应交增值税的会计科目怎么做
  • 关税从量计征有什么
  • 应缴纳增值税计什么科目
  • 绣球花的叶子出现了斑点,这是怎么了?
  • 企业法人看病费用能报销吗
  • 出售债券税费处理方法
  • 分批付款怎么确认收入
  • php运用的技术php开发有哪些实用的技术
  • 库存商品出库怎么计算
  • php批量处理数据
  • 财政专户资金是专项资金吗
  • php+vue
  • php魔术方法功能与用法实例分析
  • 利用php将图片转为文字
  • 制药企业客户退货流程
  • 个税申报需要什么资料
  • 待报解预算收入待结算财政款项
  • (WebFlux)004、WebFilter踩坑记录
  • 股票分红个人所得税
  • 所得税季报季末从业人数
  • 白条抵库现象
  • 关联公司代缴社保劳动者怎么处理
  • 低值易耗品意思
  • 可抵扣暂时性差异产生的情况有
  • 抵账的车买了什么后果
  • 无形资产的处置方式有哪些
  • 期初建帐
  • 实际验收入库是什么科目
  • 集装箱发票是否要在备注栏注明地址
  • 软件生产企业培训内容
  • 计提时的会计分录
  • 企业资质证书丢失怎么办
  • windows内存诊断工具检测到硬件问题怎么办
  • windows禁止安装
  • 怎么修改ubuntu的ip地址
  • 如何关闭win10自带杀毒软件
  • win10系统打开网页一会儿就没了
  • win8出现蓝屏怎么修复
  • xp系统桌面图标大小怎么调整
  • 无法登录所请求的数据库 用户sa登录失败
  • linux文本文件格式
  • win8系统ie浏览器最高多少
  • linux网络设备有哪些
  • 2015-04-08---cocos2dx一个都不能死(含源码)
  • 人物移动素材
  • opengl源码在哪里
  • 利用漏洞每天获利万元
  • 教你怎样用气球做可爱小兔子气球君带你做气球手工
  • 文件读写过程中,程序将直接与磁盘文件进行数据交换
  • 夜间模式图
  • 又一枚精彩的弹幕效果jQuery实现
  • 为什么电子发票没有监制章
  • 税务稽查操作规范
  • 国税地位比地税高吗
  • 税控软件怎么升级到新版本
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设