通过 Axios 从 Express.js 服务器下载 XLSX 不起作用
服务器:
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....
我已经阅读了相关帖子,包括这篇文章 如何将 .xlsx 数据保存为 blob 文件,但我无法解决它。
我想在不使用像 exceljs 这样的额外包的情况下解决它
Server:
return res.download(filepath);
Client:
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);
});
Problem:
Can't open downloaded xlsx file. Message: File might be corrupted.
API response in browser console looks like:
UEsDBAoAAAAAAPC1eVTWknwRWgEAAFoBAAARAAAAZG9jU....
I have already read through related posts including this one How to save .xlsx data to file as a blob but I couldn't solve it.
I'd like to solve it without using an additional package like exceljs
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试添加
responseType:'blob'
来请求配置选项:try adding
responseType:'blob'
to request config option: