2014-07-17 11 views
30

Kann mir bitte jemand den empfohlenen (aktuellen) Weg mitteilen, POSTed-Formulardaten in Eil zu bekommen.Express js Formulardaten

So viele Tutorials/Beiträge usw. sprechen über BodyParser, aber dies ist nicht mehr im Paket mit Express und andere Blogs usw. empfehlen die Verwendung von urlencoded direkt, aber jetzt ist dies auch nicht verfügbar.

Der Versuch, genaue Informationen über diese Frameworks oder Technologien zu finden, tut meinen Kopf in.

BTW, was ich in intrerested bin sehr einfache und kleine Formulardaten

+3

Dies sollte nicht downvoted werden. Es gibt wirklich keine einfache Dokumentation für das Lesen eines einzelnen POST-Parameters. Die akzeptierte Lösung verwendet ein veraltetes Paket. – Jeremy

+3

Jeremy Ich denke, dass die akzeptierte Lösung kein veraltetes Paket ist. Das Paket, auf das sich Mritunjay bezieht, hat einen Bindestrich in seinem Namen und ich glaube, es ist anders als die "bodyparser" Middleware, die anfällig ist. Ich denke, es wird in einigen Blogposts erwähnt, die vor dem ursprünglichen "bodyparser" warnen. Deshalb stimme ich zu, dass es nicht downvoted werden sollte (dh keine Forschungsanstrengungen zeigt), weil ich ewig nach einer Lösung gesucht habe, aber das Problem ist, dass so viel alte und verwirrende Informationen drum herum meinen Kopf rein machen. –

+0

Danke für die Klarstellung; Ich wusste nicht, dass es einen Unterschied zwischen den body-parser- und bodyParser-Paketen gibt. Diese Subtilität ist Teil des Grundes, warum diese Frage richtig ist. – Jeremy

Antwort

35

Sie body-parser durch npm-install installieren sollten. Jetzt kommt es als separate Middleware.

Nach diesem Add in Ihrem app.js

var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 
// in latest body-parser use like below. 
app.use(bodyParser.urlencoded({ extended: true })); 

Es analysiert die post Anfrage als object folgende Zeile. Sie erhalten Ihre Variablen in req.body.

In Ihrem post Anforderungshandler.

app.post('/post',function(request,response){ 
    console.log(request.body) //you will get your data in this as object. 
}) 
+9

in Express 4, jetzt verwenden: app.use (bodyParser.urlencoded ({erweitert: True})); – Jeff

5

Aus der README von body-parser.

This does not handle multipart bodies, due to their complex and typically large nature.

Die oben wird mit x-www-form-urlencoded und json arbeiten, aber es wird nicht mit mehrteiliger arbeiten. Form-Daten sind auch mehrteilig mit dem Header "multipart/form-data".

Bei form-data, die beste Lösung wäre, diese lib zu verwenden: https://github.com/noraesae/express-formidable

3

Sie können von Express-formidable Modul, dass machen. durch den folgenden Befehl ein 'Express-formidable' install npm installieren Express-formidable

das einfache Beispiel ist wie folgt

const express = require('express'); 
const formidable = require('express-formidable'); 

var app = express(); 

app.use(formidable()); 

app.post('/upload', (req, res) => { 
    //req.fields contains non-file fields 
    //req.files contains files 
    res.send(JSON.stringify(req.fields)); 
}); 

Click here for further description