node.js streams是否可以构造一个zip存档,并在创建时通过对http get请求的响应将该zip存档提供给客户机/用户?我正在寻找一种解决方案,最好避免将整个zip缓冲到服务器上的内存中。

最佳答案

node.js中的zip支持目前有点时髦:标准库支持zlib功能,但它们在文件级别工作(即,您不能创建包含完整树结构的zip存档),一些模块只能解压缩数据,一些可以创建zip文件的模块从浏览器库中移植,因此不支持流。
压缩完整目录的最佳方法是使用子进程使用zip二进制文件,并将其输出管道到http响应:

var child = require('child_process');
var zipProcess = child.spawn('zip', ['-r', '-', 'directory_to_be_compressed']);
zipProcess.stdout.pipe(res);

但是,如果只需要压缩一个文件,则可以使用zlib standard library
var gzip = zlib.createGzip();
var fs = require('fs');
var inp = fs.createReadStream('input.txt');
inp.pipe(gzip).pipe(res);

关于node.js - Node.js流到zip存档中并流zip存档作为对客户端的响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22463535/

10-10 03:17