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