Создание zip-файла из объекта JSON с использованием adm-zip
Я пытаюсь создать .zip
файл из объекта JSON в Node.js. Я использую adm-zip для этого, однако я не могу заставить его работать с этим кодом:
var admZip = require('adm-zip');
var zip = new admZip();
zip.addFile(Date.now() + '.json', new Buffer(JSON.stringify(jsonObject));
var willSendthis = zip.toBuffer();
fs.writeFileSync('./example.zip', willSendthis);
Этот код создает example.zip
но я не могу извлечь его, я пытался с .zip
экстрактор, но и с этим кодом:
var admZip = require('adm-zip');
var zip = new admZip("./example.zip");
var zipEntries = zip.getEntries(); // an array of ZipEntry records
zipEntries.forEach(function(zipEntry) {
console.log(zipEntry.data.toString('utf8'));
});
Возвращается Cannot read property 'toString' of undefined
на линии с console.log
,
Я мог бы использовать zip.writeZip()
для этого примера, но я отправляю .zip
файл в Amazon S3, поэтому мне нужно использовать метод .toBuffer()
сделать что-то подобное после использования adm-zip
:
var params = {Key: 'example.zip', Body: zip.toBuffer()};
s3bucket.upload(params, function(err, data) {...});
Я не вижу, что не так, правильно ли я использую пакет?
1 ответ
Попробуй использовать zipEntry.getData().toString('utf8')
вместо zipEntry.data.toString('utf8')
:
var admZip = require('adm-zip');
var zip = new admZip("./example.zip");
var zipEntries = zip.getEntries(); // an array of ZipEntry records
zipEntries.forEach(function(zipEntry) {
console.log(zipEntry.getData().toString('utf8'));
});