问题来源
这里下载的文件内容是压缩包格式,那生成压缩包的过程中可能会出现压缩包里没有可生成文件的情况,那么这种情况下,接口里面返回的就不是blob文件流而是json格式的内容包括code,message等等,同时前端在发送请求时需要携带responseType为blob格式,这就代表着,即使后端发送的回调不是blob文件流,前端也会自动转成文件流,并且继续走下载。
解决方案
这里采取的方案简化来说就是分为三部分,通过blob流当中的type来识别他是正异常情况,如果是异常,把blob流转成json然后找到并渲染message。
1.判断blob类型
判断这里用的是res.type,如果是text/xml就说明正常,如果是application/json就说明不正常。需要转换。


2.转换blob类型为json && 获取json中message并弹窗提示
转换用的FileReader,
let reader = new FileReader()
reader.readAsText(res, 'utf-8')
reader.onload = e => {
let readerText= reader.result
let obj= {}
obj = JSON.parse(readerText)
this.$message.error(obj .message)
}
return false;
这里的FileReader是一个文件读取对象,readAsText是一个文件转换文本的方法。这个方法结束时会自动调用onload方法,onLoad方法中去获取返回值的result 结果参数,最终获取到message
4675

被折叠的 条评论
为什么被折叠?



