NodeJS:创建 zip,但在磁盘上,而不是在内存中

Bar*_*urg 4 zip unzip node.js

我需要创建一个包含大约 1GB 数据的 zip 文件(但该数量将来会增加)。最初我用 AdmZip 构建了这个,但由于我们的虚拟机没有大量内存(也不需要它,除了创建这个 zip 文件时,所以我不想扩展),它运行内存不足并崩溃。

然后,我重新构建了该流程以便使用命令行zip,但是在完成所有设置并将其发布到服务器之后,我必须艰难地找出该命令在 Azure WebApp 上不可用。

所以现在我需要再次重建它。谁能推荐我合适的节点库来在磁盘上而不是在内存中进行压缩和解压缩?

(zip 文件格式不是硬性要求,因此如果任何其他文件格式更适合此目的,我愿意接受建议!)

Ter*_*nox 5

我想看看Archiver JS,它非常强大,允许 .zip 文件的流接口,例如:

const fs = require('fs');
const archiver = require('archiver');

const zipFile = archiver('zip', { zlib: { level: 9 }});

zipFile.on('warning', error => {
    console.log('warning:', error)
});

zipFile.on('error', error => {
    console.error('error occurred :', error)
});

const writeStream = fs.createWriteStream(__dirname + '/test.zip');
zipFile.pipe(writeStream);

// Append test file
zipFile.append(fs.createReadStream('file1.txt'), { name: 'file_1.txt' });

// Append another file...
zipFile.append(fs.createReadStream('file2.txt'), { name: 'file_2.txt' });

zipFile.finalize();
Run Code Online (Sandbox Code Playgroud)

完整文档位于: https: //www.archiverjs.com/docs/archiver