jszip return 压缩文件夹中的空 pdf 文件

jszip return empty or blank pdf file in the compressed folder

我有一个 vue 应用程序想通过 jszip 压缩文件夹中的一组 pdf 文件。 但在这次尝试中,我只使用一个文件进行测试,但不知何故 zip 已正常下载。但是打开里面的pdf文件,内容是空白的。我使用 axios 从后端获取缓冲区字节,这实际上没有问题。但我不确定为什么在jszip中压缩后它是空白的。我正在使用文件保护程序(另存为功能)下载压缩文件。

下面是我的脚本:

            const user = this.getSelectedUser(values.employee);
            const url = `some-url`;
            await ReportRepository.getReport(url).then(({ data }) => {
              console.log(Buffer.from(data).toString('base64'));
              zip.file('timesheet.pdf', Buffer.from(data).toString('base64'), { binary: true });
              zip.generateAsync({ type: 'blob' }).then((content) => {
                saveAs(content, 'timesheet.zip');
              });
            }).catch((er) => {
              console.log(er);
            });

我哪里错了,我该如何克服这些问题,或者有什么我可以改变或做的吗?

我刚弄明白问题所在,想分享一下是否有人可能有同样的问题:

我忘记在 axios 上的 res 配置中将 responseType 设置为 arrayBuffer 响应。

const config = {
  responseType: 'arraybuffer',
  headers: {
    'content-type': 'application/json',
  },
};