Может быть, я просто устал, но я не могу понять, почему это не сработает! Это экспресс-маршрут, работающий на AWS Lambda с использованием безсерверной инфраструктуры (serverless-http).
Я использую Multer для обработки загрузки файла, и это, кажется, работает нормально, я вижу, что файл загружен и доступен. Я извлекаю большую часть пути к файлу из свойства req.file, созданного multer. Этот код не записывает ничего в console.log в моих журналах cloudwatch, нет ошибок, нет извлечения завершено, нет "IN HERE !!" из фильтра на unzipper.extract (). Я проверил с помощью fs.exists, чтобы убедиться, что файл действительно существует (он существует), и когда я намеренно использую поддельное имя файла, ошибка точно выдается. Что происходит?
app.post('/incoming', upload.single('file'), (req, res) => {
let filePath = '/tmp/'+req.file.filename
let unzipper = new DecompressZip(filePath)
unzipper.extract({
path: '/tmp',
filter: function (file) {
console.log('IN HERE!!');
return file.type !== "SymbolicLink";
}
})
unzipper.on('error', err => {
console.log('Error :', err);
res.send('Error!' + err)
})
unzipper.on('extract', (log) => {
console.log('Extract Completed.', log);
let list = []
const directoryPath = req.file.destination;
console.log('directoryPath :', directoryPath);
fs.readdir(directoryPath, function (err, files) {
if (err) {
console.log('Unable to scan directory: ' + err);
return list.push(err)
}
files.forEach(function (file) {
console.log(file);
list.push(file)
});
res.send(list)
});
})
})