JS中将blob返回值转换为json格式的问题小结
今天遇到一个问题,前端通过调取后端接口下载excel,后端返回的是两种情况:
(1)用户权限不足,后端返回json格式,如下图:

(2)有权限,能够正常下载,后端返回二进制流,如下图:

封装axios时, responseType: ‘blob’,将影响第一种情况读取reponse为blob,不能直接读取code和msg,此时就需要将blob的内容转成文件读取,不能取消responseType: ‘blob’,取消会影响正常下载

调接口,根据response.data里的type去判断,返回的类型
if(response.data.type=='application/json'){
const reader = new FileReader(); //创建一个FileReader实例
reader.readAsText(response.data, 'utf-8'); //读取文件,结果用字符串形式表示
reader.onload=function(){//读取完成后,**获取reader.result**
const {msg} = JSON.parse(reader.result);
this.$Message.error(msg); //弹出错误提示
}
}如果需要显示二进制流:
var blob = new Blob([response.data]);
var downloadElement = document.createElement("a");
var href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = "下载的文件"+ ".xlsx"; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象到此这篇关于JS中如何将blob返回值转换为json格式的文章就介绍到这了,更多相关blob转换为json格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
如何在父窗口中得知window.open()出的子窗口关闭事件
在父窗口中得知window.open()出的子窗口关闭事件的方法有很多,在本文将为大家详细介绍下,感兴趣的朋友可以参考下2013-10-10
利用JavaScript实现春节倒计时效果(移动端和PC端)
这篇文章主要介绍了通过Html+Css+js如何实现春节倒计时效果,本文同时介绍了移动端和PC端两种效果,感兴趣的同学可以跟随小编一起动手试试2022-01-01
让firefox支持IE的一些方法的javascript扩展函数代码
因为一些代码,只能在IE下实现,如果用firefox实现就必须用一些扩展函数。2010-01-01


最新评论