2014-11-26 2 views
1

Короче, я пытаюсь прочитать файл .zip из своей файловой системы, сдуть zip-файл, и они передают его с помощью xml-потока, чтобы сделать что-то с помощью содержимое в файле.Unzipping с zlib в Node.js приводит к неправильной ошибке заголовка

Я думал, что это было бы довольно просто и начал с этим:

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) ISN» т.

Что мне здесь не хватает?

+0

Используйте zlib.unzip вместо zlib.gunzip – Evgenii

ответ

1

Gzip не является почтовым индексом. Это разные форматы сжатия, как и RAR. Ошибка указывает, что то, что вы пытаетесь прочитать, не является gzip-файлом.

Вы можете использовать другую библиотеку, такую ​​как JSZip.

+0

большое предложение! Мне нужно было прочитать буфер ZIP-файла, извлеченного из Amazon S3, и JSZip предложил самый простой способ для этого ... с простым «var zip = new JSZip (buffer)». Затем я мог выполнить итерацию через объект zip.files и решить, что делать с файлами оттуда. – TWright

+0

Я использую zlib.unzip вместо zlib.gunzip – Evgenii

Смежные вопросы