是否可以使用 Node.js 流构建一个 zip 存档并在创建时通过对 HTTP GET 请求的响应将该 zip 存档提供给客户端/用户?我正在寻找一种解决方案,该解决方案最好避免将整个 zip 缓冲到服务器上的内存中。
问问题
4766 次
2 回答
1
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 标准库:
var gzip = zlib.createGzip();
var fs = require('fs');
var inp = fs.createReadStream('input.txt');
inp.pipe(gzip).pipe(res);
于 2014-03-19T16:00:32.070 回答
-1
它不是 Node,但这个项目完全符合您的要求。您可以将其作为独立服务器托管并从 Node 调用它:
于 2017-11-28T18:57:19.683 回答