使用node.js zlib将zip文件流式传输到变量中

时间:2017-12-04 21:27:07

标签: javascript node.js unzip

我正在尝试将本地zip文件解压缩到node.js中的变量中,如:

    var d;
    var fs = require('fs');
    var zlib = require('zlib');
    var zipPath='../../data/lemma/lemmatization-en.zip';
    var zipExists=fs.existsSync(zipPath);
    console.log(zipPath,zipExists);
    fs.createReadStream(zipPath)
    .on('data', function (data){
      d+=data.toString();
    })
    .on('end', function (){
      console.log("read",d.length);
        zlib.inflate(d, {},function(err, buf) {
            console.error(err)
            console.log("unzip",buf.toString());
        })
    })

文件为here,它是常规的zip存档。 当我运行此操作时,出现Error: incorrect header check错误。尝试使用管道时出现相同的错误:

    fs.createReadStream(zipPath)
    .pipe( zlib.createUnzip() )
    .on('data', function (data){
      d+=data.toString();
    })
    .on('end', function (){
      console.log("read",d.length);
    })

我知道npm上有非本机模块,但我想保持简单,只使用zlib本机模块。 我的目标是读取流并将其加载到内存中,因为此文件必须在某些时候延迟加载到代码中。

0 个答案:

没有答案