Вы действительно можете сделать все, прежде чем Малтер действительно обработает изображение:
var upload = multer({
dest: 'uploads/',
fileFilter: function (req, file, cb) {
// only images are allowed
var filetypes = /jpeg|jpg|png/;
var mimetype = filetypes.test(file.mimetype);
var extname = filetypes.test(path.extname(file.originalname).toLowerCase());
if (mimetype && extname) {
return cb(null, true);
}
cb("Error");
}
}).single('localImg');
app.post('/api/file', checkBody, auth, uploadFile, controller.aController);
Возьмем, к примеру, этот код, вы можете выполнять любые действия промежуточного ПО ДО того, как multer обработает ваш файл, но multer - это библиотека для обработки multipart / form-data , не только файлы, люди используют multipart для отправка файлов в основном, но вы также можете отправлять все виды данных, и они будут добавлять их в тело (req.body)
Ваш вопрос: «Почему Multer должен загружать файлы перед любой операцией?»
Вы можете выполнить multer, когда захотите, но multer обработает запрос и отправит ваши данные в тело. Если вам не нужны данные о теле из первых рук, вам нужен multer, чтобы быть в первом промежуточном программном обеспечении.
Ваш другой вопрос: «что, если я собираюсь обновить только заголовок статьи? Старые файлы будут загружены снова?»
Нет, он будет загружен один раз, если есть какие-либо проблемы с базой данных, любая ошибка или отклонение, вы всегда можете использовать файловую систему (fs) для удаления файла с вашего сервера, если вы уже загрузили его на третий партийная система, вы можете удалить ее.
Надеюсь, это поможет