Reputation: 5772
Here's my views upload.ejs page:
<%- include('header' ,{ title:"Playground" }) -%>
<div class="wrapper">
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="text" name="name" placeholder="Image Name">
<input type="text" name="description" placeholder="Description">
<button type="submit" name="submit">Upload</button>
</form>
</div>
<%- include('footer') -%>
and this is my route upload.js file:
var express = require('express');
var router = express.Router();
var db = require('../helpers/db');
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });
router.get('/', function(req, res, next) {
res.render('upload');
});
router.post('/', urlencodedParser, function(req, res, next) {
console.log(req.body.name);
res.render('upload');
});
module.exports = router;
After clicking the submit button, I get undefined in the console. If I try to console log req.body, I get empty {}.
Upvotes: 0
Views: 382
Reputation: 1424
Note that bodyparser doesn't parse the multi-part(Form -data) data. You will need to use another package for it (https://www.npmjs.com/package/multer).
Use multi-part request only when you are uploading files like image, documents. If you are using normal data then you can remove because multi part request is considered heavier than normal post request.
enctype="multipart/form-data"
Upvotes: 2