web-dev-qa-db-fra.com

Comment gérer FormData à partir d'Express 4

J'ai essayé d'envoyer des données de formulaire à mon serveur de noeud mais req.body n'a aucun de mes champs de formulaire du côté du noeud

 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

c'est ce que j'envoie depuis le navigateur

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

dans les outils de développement, je ne vois que les données transmises dans le Referer, c'est peut-être mon problème

Référent: http: // localhost: 3000 /? Name = & budget =% C2% A310

31
SuperUberDuper

body-parser ne gère pas les corps en plusieurs parties, ce qui correspond à ce que FormData est soumis.

Au lieu de cela, utilisez un module comme multer .

Par exemple, pour récupérer les champs (normaux) d'une demande:

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);
});
61
robertklep