I tried to post form data to my express js server side. This is my pug file
form(action="/profile" method="post" enctype="multipart/form-data")
 input(type="file" accept="image/*" name="profileimage")
 input(type="text" name="username")
 input(type="submit" value="Upload")
After that I tried to log the post data with req.body inside server side js as follow. That is my profile.js
router.post('/', function (req, res) {
  console.log('Body- ' + JSON.stringify(req.body));
});
And this is my console result
body- {}
If I post without enctype="multipart/form-data" like form(action="/profile" method="post"), I can get the post data from my console result.
You need to use a middleware to handle multipart form data, i think the most famous one is multer.
You can find it here: https://github.com/expressjs/multer
To use it:
First add it to your modules with npm install --save multer in your root project
Then import it in your .js file var multer  = require('multer');
Choose your upload directory by setting the dest argument in the multer constructor: var upload = multer({ dest: 'uploads/' });
Now just pass it as a middleware in your POST function as follows:
router.post('/', upload, function (req, res) {
  console.log('Body- ' + JSON.stringify(req.body));
});
And don't forget to read the documentation at their github repo.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With