Onyx
Onyx

Reputation: 5772

Node.js/Express post method logging undefined in console

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

Answers (1)

Sagar
Sagar

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

Related Questions