繁体   English   中英

如何在不使用中间件的情况下使用multer上传文件

[英]How to use multer upload file without middleware

我是NodeJS的新手,正在开发已创建注册表单的应用程序。 要上传图片,我正在使用multer 对于表单验证,我使用express-validator 我的问题是,在进行表单验证之前,文件已上传。 因此,如果用户由于某些验证错误而没有创建帐户,但是文件将被上传。 问题是,无论帐户是否成功创建,我都可以为每个表单提交上传文件。

我想做的事?

我只想在用户成功创建帐户后保存文件。 所以,无论如何在回调中使用multer,所以当我完成表单验证后,文件就会上传。 我不能在multer中间件和最终回调之间使用express-validation中间件,因为express-validation会将其错误传递给下一次回调。 这是我的一些代码

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
}

Express路由器按照安装中间件的顺序执行中间件

router.post('/registeration', multerMiddleware, validationMiddleware, finalCallback)

因此,在您的validationMiddleware完成验证之前,已执行(因此保存了文件)您的multerMiddleware

将代码更改为:

router.post('/registeration', validationMiddleware,multerMiddleware, finalCallback)

因此, multerMiddleware仅在验证请求后保存文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM