1.后端返回的json数据结构为:
{"message":"下载失败,下载文件不存在,请联系管理员处理!","code":500}
2.vue 请求后台接口返回的 Blob数据
3.问题出现的原因是,正常其他数据列表接口,返回的 请求头部 直接为 json ,有附件的 则为 blob,所以得特殊处理下
4.解决方案,(注意:就是它: response.config.responseType=='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)