2017-08-11 44 views
0

我想在Node中解压缩gzip文件,但我遇到以下错误。节点Zlib不正确的标题检查

Error: incorrect header check at Zlib._handle.onerror (zlib.js:370:17)

这里是代码的原因的问题。

'use strict' 

const fs = require('fs'); 
const request = require('request'); 
const zlib = require('zlib'); 
const path = require('path'); 

var req = request('https://wiki.mozilla.org/images/f/ff/Example.json.gz').pipe(fs.createWriteStream('example.json.gz')); 

req.on('finish', function() { 
    var readstream = fs.createReadStream(path.join(__dirname, 'example.json.gz')); 
    var writestream = fs.createWriteStream('example.json'); 

    var inflate = zlib.createInflate(); 
    readstream.pipe(inflate).pipe(writestream); 
}); 
//Note using file system because files will eventually be much larger 

我是否缺少明显的东西?如果不是,我怎么才能确定是什么在抛出错误?

回答

2

该文件是gzipped,因此您需要使用zlib.Gunzip而不是zlib.Inflate

另外,流在内存使用方面非常有效,所以如果你想不存储。广州本地文件先进行检索时,可以使用这样的事情:

request('https://wiki.mozilla.org/images/f/ff/Example.json.gz') 
    .pipe(zlib.createGunzip()) 
    .pipe(fs.createWriteStream('example.json')); 

否则,可以修改您现有的代码:

var gunzip = zlib.createGunzip(); 
readstream.pipe(gunzip).pipe(writestream);