我有一个基于NodeJS + ExpressJS的RESTful Web服务,使用了application/json
和multipart/form-data
格式的内容。在multer的帮助下使用POST /api/products
时,multipart/form-data
路由支持上载图像文件。对于同一条路由,我使用express-validator来验证输入,最初用于验证基于JSON的输入。
如果对身体其余部分的验证(例如name
和description
的模型字段验证失败),如何阻止multer存储图像文件?
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也会存储映像。 express-validator需要访问已解析的主体,因此不能在multer之前插入验证。
是否建议使用multer.memoryStorage()
并在通过fs.writeFile()
手动验证之后稍后将图像存储在控制器内部?