带有Post方法和enctype Multipart / form-data的表单没有在Nodejs Express multer模块上提交

我在用 :

"ejs": "^2.5.6", "express": "^4.14.0", "express-validator": "^3.2.0", "multer": "^1.3.0", 

我的表单是:

  <form id="offer-form" role="form" enctype="multipart/form-data" action="/subfolder/86" method="POST"> <input type="text" name="name"/> <input type="file" name="images"/> <input type="file" name="images"/> <button type="submit">Submit</submit> </form> 

我的服务器路由:

 var path = require('path'); var express = require('express'); var bodyParser = require('body-parser'); var expressValidator = require('express-validator'); var osmodule = require('../../osmodule'); var Multer = require('multer'); var request = require('request'); const multer = Multer({ storage: Multer.memoryStorage(), limits: { fileSize: 5 * 1024 * 1024 // no larger than 5mb, you can change as needed. } }); //Adding a new subfolder app.post('/subfolder/:id', multer.array({ name: 'images', maxCount: 6 }), expressValidator, function (req, res, next) { console.log("Form Submitted"); }).use(function (req, res, next) { res.setHeader('Content-Type', 'text/plain'); res.status(404).send('Not Found ! '); }); 

通常这个代码应该在控制台上打印消息

提交表单,但服务器没有收到什么,甚至没有find

我刚刚注意到使用multer和expressValidator的问题。 如果我删除expressValidator,它正在工作,但如果我添加它,它不工作。 我需要expressValidator来validation用户数据。 有没有其他的validation器可以接受与手术者一起使用?

我想这可能是由于validation器没有正确初始化。 通过在app.post之前添加以下两行来尝试以下app.post

在里面

 app.use(bodyParser.json()); //To enable post request over node api. app.use(expressValidator([options])); // this line must be immediately after any of the bodyParser middlewares! 

然后你在app.post 里面configuration你的validation

 req.checkBody('postparam', 'Invalid postparam').notEmpty().isInt(); 

查看所有可用的选项

记得从上面的当前app.post方法中删除expressValidator

我find了使用这两个中间件的解决scheme,我只是在调用multer之后调用之前调用express-validator:

 var path = require('path'); var express = require('express'); var bodyParser = require('body-parser'); var expressValidator = require('express-validator'); var osmodule = require('../../osmodule'); var Multer = require('multer'); var request = require('request'); const multer = Multer({ storage: Multer.memoryStorage(), limits: { fileSize: 5 * 1024 * 1024 // no larger than 5mb, you can change as needed. } }); app.get('/home',function(req,res){ console.log("Welcome Brother"); }) .use(multer.array({ name: 'images', maxCount: 6 }); .use(expressValidator); .post('/subfolder/:id', function (req, res, next) { console.log("Form Submitted"); }).use(function (req, res, next) { res.setHeader('Content-Type', 'text/plain'); res.status(404).send('Not Found ! '); }); 

使用MULTER上传多张图片