Javascript zip存档中的Nodejs和更新文件
我想用Javascript zip存档中的Nodejs和更新文件,javascript,node.js,filesystems,zip,ziparchive,Javascript,Node.js,Filesystems,Zip,Ziparchive,我想用nodejs更新zip arhive中的文件。例如,我有一个包含两个文件的zip文件: a.zip |-a.txt |-b.txt 我使用archiver: var archiver = require('archiver'); var archive = archiver('zip', {}); archive.pipe(fs.createWriteStream('./a.zip')); archive.append(fs.createReadStream('./c.t
nodejs
更新zip arhive中的文件。例如,我有一个包含两个文件的zip文件:
a.zip
|-a.txt
|-b.txt
我使用archiver:
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
当前无法使用archiver
将其附加到现有存档中。以下是2013年发行的相关问题:
在您的例子中,append
是附加到流,而不是附加到新文件的目标archiver
不关心a.zip
上的内容,它只是用您给archiver.append
的任何内容覆盖它
您的最佳选择似乎是使用解压现有文件,然后使用archiver
将结果附加到新版本的存档中