我想在zip arhive与nodejs
更新文件。例如,我有两个文件的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
文件之一的内容
2条答案
按热度按时间uujelgoq1#
archiver
目前无法附加到现有归档文件。以下是2013年打开的相关问题:support appending to existing archives #23在您的例子中,
append
是附加到 stream,而不是附加到新文件的目标位置。archiver
不关心a.zip
中的内容,它只是用您给予archiver.append
的内容覆盖它。看起来最好的办法是使用maxogden/extract-zip解压缩现有文件,然后使用
archiver
将结果附加到新版本的存档中。vybvopom2#
您可以使用JSZip.您可以参考官方的documentation。
下面是一个简单的Node.js示例: