在axios中使用responseType:'arraybuffer'以及Blob对象来处理xlsx文件的下载问题。
示例代码:
axios({
url: 'http://example.com/download',
method: 'GET',
responseType: 'arraybuffer',
}).then((response) => {
const blob = new Blob([response.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
const href = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = href;
link.download = 'example.xlsx';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
});
此例中,我们通过请求设置responseType属性为arraybuffer,这样返回的数据就会作为一个ArrayBuffer对象。接着,我们使用该对象创建一个Blob对象并设定它的类型为xlsx,并创建一个URL来生成一个地址。最后,我们动态创建一个a标签,将它的href属性设为URL,download属性设为文件名,并且将其添加到我们的页面中,在下载完成后再从页面中移除这个a标签。