背景:在实现导出性能的时候,后端返回的是二进制文件流,当导出失败有报错信息时发现无奈提醒到后盾返回的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格局的数据。