Я извлекаю некоторые файлы из zip-файла с Node/Express
.Эта библиотека, которая извлекает файлы, может записывать на диск или сохранять файлы в массиве, который содержит буфер данных.
Есть некоторый нисходящий код, который взаимодействует с Express/Multers
req.files
в этом формате.Когда пользователь не загружает zip
, этот код получает то, что ему нужно.Когда пользователь загружает почтовый индекс, содержимое не в этой форме.
Каковы некоторые подходы к такому случаю?В настоящее время я создаю массив, который имеет форму, аналогичную req.files
, на основе массива, создаваемого библиотекой zip
.
// If the payload is a `zip`, unzip and put the files on `req`
const unZippedFiles = await unZipFile(files[0].path, req);
req.files = unZippedFiles;
req.unzippedPath = unzippedPath;
этот массив файлов имеет другую форму и свойства, отличные от массива, созданного Мултером.
// otherwise..just use multer to put files on req
const importFileHandler = multer({
dest,
preservePath: true,
fileFilter: (_req, file, cb) => {
if (fileFilter.isPermitted(file)) {
return cb(null, true);
}
const err = new Error('file type is not allowed');
return cb(null, false, err);
}
}).any();