背景:在实现导出性能的时候,后端返回的是二进制文件流,当导出失败有报错信息时发现无奈提醒到后盾返回的message,于是就找到了FileReader来解决这个问题。
1.理解FileReader定义
FileReader容许Web程序读取文件,所以能够通过这个来转化Blob数据。
接下来,看是如何实现的
exportReport () { var params = this.$refs.query.handleParams(); afterSale.downloadLocalFirstInsRateList({ filters: params, pageIndex: this.pageNum, pageSize: this.pageSize, sorts: [] }).then(res => { let that = this; this.sameParams = res; let reader = new FileReader(); reader.readAsText(res); reader.onload = function (res) { if (res.target.result.indexOf('statusCode') !== -1) { if (JSON.parse(res.target.result).statusCode === 500) { that.$Message.error(JSON.parse(res.target.result).message); } } else { const fileName = '本地首保率剖析报表.xlsx'; const link = document.createElement('a'); link.href = window.URL.createObjectURL(that.sameParams) link.download = fileName; link.click() window.URL.revokeObjectURL(link.href); } }; }).catch(error => { console.log(error); this.loading = false; }); },
首先第一步:new一个FileReader对象
第二步:调用FileReader的办法 readAsText
第三步:回调函数onload 读取胜利时 获取res.target.result代表返回的后果,此时就将Blob数据转换成了json格局的数据。