我想用nodejs
更新zip档案中的文件。例如,我有两个文件的zip文件:
a.zip
|-a.txt
|-b.txt
我使用存档器:
var archiver = require('archiver');
var archive = archiver('zip', {});
archive.pipe(fs.createWriteStream('./a.zip'));
archive.append(fs.createReadStream('./c.txt'), { name: 't.txt' });
archive.finalize();
但是我有一个问题,我的存档已被完全覆盖。结果,我得到:
a.zip
|-t.txt
如果我使用:
archive.file('./a.txt', { name: 't.txt' });
结果保持不变。 我想得到这样的结构
a.zip
|-a.txt
|-b.txt
|-t.txt
或更新文件a.txt
或b.txt
之一的内容
答案 0 :(得分:2)
archiver
当前无法添加到现有存档。这是相关的问题:https://github.com/archiverjs/node-archiver/issues/23
在您的情况下,append
附加到流上,而不附加到新文件目标位置上。 archiver
不在乎a.zip
的内容,它只是将您提供给archiver.append
的内容覆盖掉。
编辑:似乎最好的选择是使用https://github.com/maxogden/extract-zip解压缩现有文件,然后使用archiver
将结果附加到新版本的存档中。