Узел Извлечение асинхронного файла zip с помощью обратных вызовов или событий?
Я должен написать модуль, задача которого - извлечь ZIP-файл с двумя параметрами (zip file's path
, directory where to extract's path
) который должен предоставить метод для выполнения задачи, а затем вызвать другую задачу, если операция прошла успешно.
Моя главная проблема: должен ли я использовать шаблон проектирования обратного вызова или наблюдаемый источник событий?
По сути, мне интересно, должен ли я выставить объект, который расширяет модуль событий, который можно было бы наблюдать на чем-то вроде extraction-complete
событие Или, если я должен использовать callback(err, 'ok')
если это успешно.
Каков был бы умный подход между этими двумя образцами?
Моя цель - разархивировать файл, затем просмотреть содержимое извлеченного архива и записать некоторую информацию в базу данных из извлеченных папок. Папка представляет собой ZIP-файл, состоящий из папок с изображениями в нем и имеет около 600 записей
1 ответ
Вы можете использовать эту команду для установки сначала распаковать:
npm install unzip
затем используйте следующий код:
var unzip = require('unzip');
var stream = fs.createReadStream('/tmp/file.zip');
stream.pipe(unzip.Extract({ path: '/dest' })
.on('close', function () {
// Your callback code will go here...
})
);