Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs Express multer模块上未提交包含Post方法和enctype多部分/表单数据的表单_Node.js_Forms_Express_Ejs_Multer - Fatal编程技术网

Node.js Nodejs Express multer模块上未提交包含Post方法和enctype多部分/表单数据的表单

Node.js Nodejs Express multer模块上未提交包含Post方法和enctype多部分/表单数据的表单,node.js,forms,express,ejs,multer,Node.js,Forms,Express,Ejs,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="

我正在使用:

"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>
通常,此代码应在控制台上打印消息

提交的表格 但是服务器没有收到任何东西,甚至没有 找不到


我刚刚注意到问题在于使用multer和expressValidator。如果我删除expressValidator,它会工作,但如果我添加它,它就不会工作。我需要expressValidator来验证用户数据。是否有任何其他验证器将接受与multer一起使用?

我认为这可能是由于验证器未正确初始化所致。 在
app.post
之前添加以下两行,尝试以下操作

INIT

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

req.checkBody('postparam', 'Invalid postparam').notEmpty().isInt();
查看所有可用的


请记住从上面的当前app.post方法中删除expressValidator我找到了使用这两个中间件的解决方案,我只是在操作之前调用了,在调用multer之后调用了expressValidator:

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 ! ');
    });

我把它贴在帖子上是因为我希望它只在那条路线上使用,而不是一般的应用程序上。如果我按照您要求的方式来做,则应用程序将使用general@conrad Lotz
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 ! ');
    });