需求是页面有个下载功能,下载的目标文件是excel文件,我用axios请求接口,请求成功,可以获取excel文件,但是excel文件里的内容不正确,excel里的内容是接口返回的响应体内容,一串长长的字符串,而不是正确的excel内容
export function getBlobRequest(url, params = {}) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params,
responseType: 'blob' //返回数据的格式,可选值为arraybuffer,blob,document,json,text,stream,默认值为json
})
.then(response => {
resolve(response);
})
.catch(err => {
console.log(`接口调用失败`);
Message.error({message: '网络异常,请稍后再试!'});
reject(err);
})
})
}
blob解析代码
if (!data) {
return;
}
let head = data.headers['content-disposition'];
let type = data.headers['content-type'];
console.log(type)
let url = window.URL.createObjectURL(new Blob([data.data], {type: type}));
let fname = '';
if (head) {
try {
fname = head.split(';')[2].split('=')[1];
let reg = new RegExp('"',"g");
fname = fname.replace(reg, "");
}catch (err){
console.log('can not get pdf name');
}
}
let link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.setAttribute('download', fname);
document.body.appendChild(link);
link.click();
document.body.removeChild(link); //下载完成移除元素
window.URL.revokeObjectURL(url); //释放掉blob对象
后端返回excel的地址,你下载就行了