У меня есть веб-служба RESTful на основе NodeJS + ExpressJS, использующая отформатированный контент application/json
и multipart/form-data
. Маршрут POST /api/products
поддерживает загрузку файлов изображений при использовании multipart/form-data
с помощью multer . Для того же маршрута я использую экспресс-валидатор для проверки ввода, первоначально использовавшийся для проверки ввода на основе JSON.
Как я могу удержать multer от сохранения файла изображения, если проверка для остальной части тела, скажем, полей модели для name
и description
, не удалась?
router.post('/', multer({dest: '/tmp'}).single('image'), [
body('name').not().isEmpty().withMessage('Should not be empty'),
body('description').not().isEmpty().withMessage('Should not be empty')
], Controller.create);
Из-за порядка промежуточного программного обеспечения multer сохраняет изображение также, если проверка не удалась позже. Экспресс-валидатору необходим доступ к уже проанализированному телу, поэтому вставка валидации перед multer невозможна.
Рекомендуется ли использовать multer.memoryStorage()
и сохранять изображение позже внутри контроллера после проверки вручную с помощью fs.writeFile()
?