vue blob文件下载文件时后端抛出异常,并返回json错误信息,前端捕获信息并提示

后端返回的json数据为:

{"success":false, "message":"操作失败,没有需要下载的文件","code":500}

前端捕获到的Blob数据: 

 解决方法:服务响应的统一拦截器中判断blob类型,输出异常信息:

import Vue from 'vue'
import axios from 'axios'

const service=axios.create({
    baseUrl:xxxxx,
    timeout:3600000
})

//response interceptor
service.interceptors.response.use(response)=>{
   if(response.status==200 &&b response.config.responseType=='blob'){
     if(response.data.size==0 || response.headers['content-type'].includes('json'){
        let data=response.data
        let fileReader=new FileReader()
        fileReader.readAsText(data)
        fileReader.onload=function(result){
            let jsondata=JSON.parse(result.target.result)
            notification.error({message:'提示', description: jsondata.message})
        }
        return Promise.reject(response)
     }
     return response
  }else{
     return response.data
  }
},error)

参考文档:

blob文件导出,设置了responseType: 'blob'之后,如果返回json错误信息,处理方法(new FileReader()) - cros - 博客园axios 设置 responseType:Blob,后台返回的数据会被强制转为blob类型,这时后台返回的数据会有两种情况要处理: 1. 数据异常,后台返回 blob 类型异常信息: 使用https://www.cnblogs.com/liql/p/14516089.html

设置了responseType:Blob之后,如果返回json错误信息,如果获取? - 小情绪^_^ - 博客园最近做了一个文件下载功能,于是设置了responseType: Blob的方式, 什么是Blob呢,MDN官方解释:Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定https://www.cnblogs.com/qilj/p/11950517.html

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值