通过 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);
});