web-dev-qa-db-ja.com

Expressフォームフォームデータ

誰かが私に速達でPOSTされたフォームデータを取得するための推奨される(最新の)方法を教えてもらえますか?.

多くのチュートリアル/投稿などではbodyParserについて説明していますが、これはExpressや他のブログなどにバンドルされなくなり、urlencodedを直接使用することを推奨していますが、現在はこれも利用できません。

これらのフレームワークまたはテクノロジーに関する正確な情報を見つけようとするのが私の頭です。

ところで私が興味を持っているのは、非常にシンプルで小さなフォームのデータです

42
Dave Pile

body-parserからnpm-installをインストールする必要があります。今では、別個のミドルウェアとして提供されています。

その後、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 }));

postリクエストをobjectとして解析します。 req.bodyで変数を取得します。

post要求ハンドラー。

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

編集1

上記の答えは、具体的に尋ねられた質問に対するもので、OPはbodyParserの一部ではなくなったexpress(非推奨)を探していました。

質問のタイトルは非常に一般的であり、回答にはform-dataのすべての側面が含まれていないため、@ StLiaの回答を編集として配置します。

Body-Parser Readme

複雑で一般的に大きな性質のため、これはマルチパートボディを処理しません。マルチパートボディの場合、次のモジュールに興味があるかもしれません。

53
Mritunjay

それにexpress-formidableモジュールを使用できます。次のコマンドで「express-formidable」をインストールしますnpm install express-formidable

簡単な例は次のとおりです

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

詳細についてはここをクリック

16
HubballiHuli

README of body-parser から:

複雑で一般的に大きな性質のため、これはマルチパートボディを処理しません。

上記はx-www-form-urlencodedおよびjsonで機能しますが、multipartでは機能しません。 form-dataは、ヘッダーmultipart/form-dataを持つmultipartでもあります。

form-dataの場合、最善の解決策は express-formidable を使用することです。

14
StLia