如何使用Node.js zlib模块的选项?

我需要使用zlib在极端压缩级别压缩Node.js中的缓冲区。 输出的头应该是78 DA。 除非我错过了一些东西,否则Node.js文档并没有描述如何使用zlib.Deflate类。 它不接受任何参数。

http://nodejs.org/api/zlib.html#zlib_class_zlib_deflate

       

网上收集的解决方案 "如何使用Node.js zlib模块的选项?"

使用zlib. createGzip / createDeflate获取你需要的压缩器的实例,在对象中有选项。

如果你想这样做所有内存:

 var zlib = require('zlib'); // create a new gzip object var gzip = zlib.createGzip({ level: 9 // maximum compression }), buffers=[], nread=0; // attach event handlers... gzip.on('error', function(err) { gzip.removeAllListeners(); gzip=null; }); gzip.on('data', function(chunk) { buffers.push(chunk); nread += chunk.length; }); gzip.on('end', function() { var buffer; switch (buffers.length) { case 0: // no data. return empty buffer buffer = new Buffer(0); break; case 1: // only one chunk of data. return it. buffer = buffers[0]; break; default: // concatenate the chunks of data into a single buffer. buffer = new Buffer(nread); var n = 0; buffers.forEach(function(b) { var l = b.length; b.copy(buffer, n, 0, l); n += l; }); break; } gzip.removeAllListeners(); gzip=null; // do something with `buffer` here! }); // and finally, give it data to compress gzip.write(inputBuffer); gzip.end(); 

当然,如果你处理大量的数据,将输出stream式传输到一个文件,而不是缓冲内存中的所有内容。