Compression and decompression of data using zlib in Nodejs

Eli picture Eli · Oct 2, 2011 · Viewed 66.7k times · Source

Can someone please explain to me how the zlib library works in Nodejs?

I'm fairly new to Nodejs, and I'm not yet sure how to use buffers and streams.

My simple scenario is a string variable, and I want to either zip or unzip (deflate or inflate, gzip or gunzip, etc') the string to another string.

I.e. (how I would expect it to work)

var zlib = require('zlib');
var str = "this is a test string to be zipped";
var zip = zlib.Deflate(str); // zip = [object Object]
var packed = zip.toString([encoding?]); // packed = "packedstringdata"
var unzipped = zlib.Inflate(packed); // unzipped = [object Object]
var newstr = unzipped.toString([again - encoding?]); // newstr = "this is a test string to be zipped";

Thanks for the helps :)

Answer

Maksym picture Maksym · Oct 1, 2016

For anybody stumbling on this in 2016 (and also wondering how to serialize compressed data to a string rather than a file or a buffer) - it looks like zlib (since node 0.11) now provides synchronous versions of its functions that do not require callbacks:

var zlib = require('zlib');
var input = "Hellow world";

var deflated = zlib.deflateSync(input).toString('base64');
var inflated = zlib.inflateSync(new Buffer(deflated, 'base64')).toString();

console.log(inflated);