Mik*_*keV 4 javascript node.js
我正在尝试在 Node 中解压缩一个 gzipped 文件,但遇到以下错误。
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
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗?如果没有,我如何确定是什么引发了错误?
该文件gzip压缩,所以你需要使用zlib.Gunzip的替代zlib.Inflate。
此外,流在内存使用方面非常有效,因此如果您想在不首先在本地存储 .gz 文件的情况下执行检索,您可以使用以下内容:
request('https://wiki.mozilla.org/images/f/ff/Example.json.gz')
.pipe(zlib.createGunzip())
.pipe(fs.createWriteStream('example.json'));
Run Code Online (Sandbox Code Playgroud)
否则,您可以修改现有代码:
var gunzip = zlib.createGunzip();
readstream.pipe(gunzip).pipe(writestream);
Run Code Online (Sandbox Code Playgroud)