Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to handle FormData from express 4

I tried sending some form data to my node server but req.body has none of my form fields the node side

 var express = require('express') var app = express() var path = require('path') var bodyParser = require('body-parser') app.use(bodyParser.urlencoded({   extended: true }));  app.get('/', function (req, res) {   res.sendFile('index.html') }) app.post('/sendmail', function (req, res) {    const formData = req.body.formData 

this is what I'm sending from the browser

fetch('/send', {   method: 'POST',   body: new FormData(form) }) 

in dev tools I only see the data passed in the Referer, maybe that is my issue

Referer:http://localhost:3000/?name=&budget=%C2%A31000

like image 633
SuperUberDuper Avatar asked Jun 04 '16 12:06

SuperUberDuper


People also ask

How do I send form data to Express?

To get started with forms, we will first install the body-parser(for parsing JSON and url-encoded data) and multer(for parsing multipart/form data) middleware. var express = require('express'); var bodyParser = require('body-parser'); var multer = require('multer'); var upload = multer(); var app = express(); app.


1 Answers

body-parser doesn't handle multipart bodies, which is what FormData is submitted as.

Instead, use a module like multer.

For example, to retrieve the (regular) fields of a request:

const multer = require('multer'); const upload = multer();  app.post('/send', upload.none(), (req, res) => {   const formData = req.body;   console.log('form data', formData);   res.sendStatus(200); }); 
like image 126
robertklep Avatar answered Sep 30 '22 09:09

robertklep