expressionjs 4和multer

我正在写一个Node js应用程序来处理多部分表单数据,所以我使用multer来达到这个目的。 问题是req.body总是未定义的。

这是我的代码:

 var app = express(); var http = require('http').createServer(app); //All environments app.set('port', process.env.PORT || config.ports.HTTP_PORT); app.set('views', config.folders.views); app.set('view engine', 'ejs'); //Express 4 dependencies app.use(morgan('dev')); app.use(multer({ dest: config.folders.uploads})) app.use(cookieParser()); //Parser for cookie session app.use(session({ secret: 'secret' })); app.use(passport.initialize()); //Init passport app.use(passport.session()); //Persistent login sessions app.use(flash()); //Flash messages //Public folder app.use(express.static(config.folders.public)); require('./auth')(passport); //Add auth methods to passport require('./routes')(app, passport); //Add routes 

 app.post('/test', function(req, res) { console.log(req.body.test); //req.body always undefined }); 

可能是什么问题呢?

编辑:

现在req.body中充满了数据,但是req.files属性仍然是未定义的

添加bodyParser与此代码:

 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); 

为了发送文件,HTML表单需要适当地设置enctype属性。 例:

 <form method="POST" action="/foo" enctype="multipart/form-data"> 

编辑您的原始代码:
您必须安装Multer Multer Docs npm i multer -S

 const app = express(); const http = require('http').createServer(app); const multer = require('multer'); // added, wasn't in your original code. //All environments app.set('port', process.env.PORT || config.ports.HTTP_PORT); app.set('views', config.folders.views); app.set('view engine', 'ejs'); //Express 4 dependencies app.use(morgan('dev')); // newly added app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(multer({ dest: config.folders.uploads}).single('file')) // added the single() method app.use(cookieParser()); //Parser for cookie session app.use(session({ secret: 'secret' })); app.use(passport.initialize()); //Init passport app.use(passport.session()); //Persistent login sessions app.use(flash()); //Flash messages //Public folder app.use(express.static(config.folders.public)); require('./auth')(passport); //Add auth methods to passport require('./routes')(app, passport); //Add routes 

testing代码:

 app.post('/test', (req, res) => { console.log(req.body.test); //req.body always undefined console.log(req.file); // added this, it should work fine now. });