通过 Axios 从 Express.js 服务器下载 XLSX 不工作
Download XLSX via Axios from Express.js server does not work
服务器:
return res.download(filepath);
客户:
function provideDownload(filename, data) {
const linkElement = document.createElement('a');
linkElement.setAttribute('href', data);
linkElement.setAttribute('download', filename);
document.body.appendChild(linkElement);
linkElement.click();
linkElement.remove();
}
function provideBlobDownload(filename, data) {
provideDownload(
filename,
window.URL.createObjectURL(new Blob([data]))
);
}
axios.post('/export', {
entity, fileformat, locale: props.locale,
}).then((res) => {
provideBlobDownload(filename, res.data);
});
问题:
无法打开下载的 xlsx 文件。消息:文件可能已损坏。
API 浏览器控制台中的响应如下所示:
UEsDBAoAAAAAAPC1eVTWknwRWgEAAFoBAAARAAAAZG9jU....
我已经阅读了相关帖子,包括这篇,但我无法解决。
我想在不使用像exceljs这样的额外包的情况下解决它
尝试添加 responseType:'blob'
以请求配置选项:
axios.post('/export', {
entity,
fileformat,
locale: props.locale
}, {
responseType: 'blob'
})
.then((res) => {
provideBlobDownload(filename, res.data);
});
服务器:
return res.download(filepath);
客户:
function provideDownload(filename, data) {
const linkElement = document.createElement('a');
linkElement.setAttribute('href', data);
linkElement.setAttribute('download', filename);
document.body.appendChild(linkElement);
linkElement.click();
linkElement.remove();
}
function provideBlobDownload(filename, data) {
provideDownload(
filename,
window.URL.createObjectURL(new Blob([data]))
);
}
axios.post('/export', {
entity, fileformat, locale: props.locale,
}).then((res) => {
provideBlobDownload(filename, res.data);
});
问题:
无法打开下载的 xlsx 文件。消息:文件可能已损坏。
API 浏览器控制台中的响应如下所示:
UEsDBAoAAAAAAPC1eVTWknwRWgEAAFoBAAARAAAAZG9jU....
我已经阅读了相关帖子,包括这篇
我想在不使用像exceljs这样的额外包的情况下解决它
尝试添加 responseType:'blob'
以请求配置选项:
axios.post('/export', {
entity,
fileformat,
locale: props.locale
}, {
responseType: 'blob'
})
.then((res) => {
provideBlobDownload(filename, res.data);
});