在Node.js中使用zlib解压缩会导致错误的标头错误

时间:2014-11-26 10:32:47

标签: node.js zlib unzip

简而言之,我正在尝试从我的文件系统中读取.zip文件,对zip文件进行缩减,然后使用xml-stream对其进行流式处理,以便对文件中的内容进行一些操作。

我认为这很简单,并从此开始:

var fs        = require('fs')
    , XmlStream = require('xml-stream')
    , zlib = require('zlib');

//- read the file and buffer it.
    var path = '../path/to/some.zip';
    var fileBuffer = fs.readFileSync(path, { encoding: 'utf8' });

//- use zlib to unzip it
    zlib.gunzip(fileBuffer, function(err, buffer) {
       if (!err) {
         console.log(buffer.toString());
       }
       console.log(err);
    });

但这会导致

 { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }

更改编码或方法(.unzip.gunzip.inflate)也不起作用。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

Gzip不是拉链。它们是不同的压缩格式,就像RAR一样。该错误表明您尝试读取的内容不是gzip压缩文件。

您可以使用其他库,例如JSZip

答案 1 :(得分:0)

我使用zlib.unzip而不是zlib.gunzip