1. 网络请求的时候设置responseType,看网上好多都是设置为"blob",我这里设置"arraybuffer"也ok,需要做new Blob()处理
axios({
method: "post",
url: URL.CSMS_SALES_COMPANY_QUERYTREEOUT,
data: {
token: Cookies.get("ma_token"),
reqData: {}
},
responseType: "arraybuffer"
}).then(response => {
exportExcel(response,"企业信息导出.xlsx",this);
}).catch(error => {});
2. 因为是多个页面涉及下载,故封装了方法
(1)在Promise中,new一个 FileReader对象,通过readAsText方法读取内容,读取完成后将结果返回
(2)判断是否是后端的错误码提示,若不是,则开始处理数据,若是,则抛出错误提示
(3)判断浏览器,IE浏览器,使用window.navigator.msSaveOrOpenBlob,保存和打开
(4)其他浏览器,则通过window.URL.createObjectURL,获取url,然后在页面插入一个a标签,隐藏,设置h