首页 > 解决方案 > jszip在压缩文件夹中返回空或空白的pdf文件

问题描述

我有一个 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);
            });

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

标签: javascriptvue.jsjszip

解决方案


我只是得到问题的问题,如果有人可能有同样的问题,想分享一下:

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

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

推荐阅读