我使用node-archiver压缩文件,如下所示。但是我的zip文件损坏了。
applicationDidEnterBackground(_:)
我修改了代码以直接保存到文件系统。有了这段代码,我得到了在文件系统上创建的有效zip文件。
app.get('/download', async (req, res) => {
const arch = archiver('zip');
arch.append('abc', { name: 'abc.txt'});
arch.append('cdf', { name: 'cdf.txt'});
res.attachment('test.zip').type('zip');
arch.pipe(res);
arch.finalize();
});
为什么通过快速app.get('/download', async (req, res) => {
const arch = archiver('zip');
arch.append('abc', { name: 'abc.txt'});
arch.append('cdf', { name: 'cdf.txt'});
const output = fs.createWriteStream('./test.zip');
arch.pipe(output);
arch.finalize();
});
对象发送的zip文件被损坏?解决办法是什么?
编辑:
如果我将输出格式用作res
而不是zip,那么它将正常工作。
tar
答案 0 :(得分:0)
我认为您也需要关闭响应流:
app.get('/download', async (req, res) => {
const arch = archiver('zip');
arch.append('abc', { name: 'abc.txt'});
arch.append('cdf', { name: 'cdf.txt'});
res.attachment('test.zip').type('zip');
arch.on('end', () => res.end()); // end response when archive stream ends
arch.pipe(res);
arch.finalize();
});