Как использовать файл загрузки мультитера без промежуточного программного обеспечения
Я новичок в NodeJS, я разрабатываю приложение, в котором я создал форму регистрации. Для загрузки изображений я использую multer. И для проверки формы я использую экспресс-валидатор. Проблема со мной заключается в том, что перед проверкой формы файл загружен. Итак, если пользователь не создал учетную запись из-за некоторых ошибок проверки, но файл отправляется на загрузку. Проблема в том, что я получаю загрузку файла для каждой отправки формы независимо от того, успешно ли создана учетная запись или нет.
Что я хочу сделать?
Я хочу сохранить файл только тогда, когда пользователь успешно создал учетную запись. Итак, есть ли в любом случае использовать multer внутри обратного вызова, поэтому, когда мои проверки формы завершены, файлы отправляются. Я не могу использовать промежуточное программное обеспечение экспресс-проверки между промежуточным программным обеспечением multer и окончательным обратным вызовом, потому что экспресс-проверка передает ошибки на следующий обратный вызов. Вот мой код
router.post('/registeration', multerMiddleware, validationMiddleware, finalCallback)
validationMiddleware - это массив.
var multer = require('multer');
var multerMiddleware= multer({dest: './profile-images', fileFilter: userRegisteration.fileFilter}).single('profileImage');
var validationMiddleware = [check(...), check(...),...]
var finalCallback = function (req, res, next) {
// code is here
}
1 ответ
Экспресс-маршрутизатор выполняет промежуточные программы в той же последовательности, в которой вы их монтируете
router.post('/registeration', multerMiddleware, validationMiddleware, finalCallback)
Так что ваши multerMiddleware
выполняется (и, следовательно, сохраняется файл) до вашего validationMiddleware
сделал проверку.
Измените код на:
router.post('/registeration', validationMiddleware,multerMiddleware, finalCallback)
Так, multerMiddleware
сохранит файл только после подтверждения запроса