enctype='multipart/form-data' とはどういう意味ですか? 質問する

enctype='multipart/form-data' とはどういう意味ですか? 質問する

enctype='multipart/form-data'HTML フォームでは は何を意味し、いつ使用すればよいのでしょうか?

ベストアンサー1

POST リクエストを行うときは、リクエストの本文を構成するデータを何らかの方法でエンコードする必要があります。

HTMLフォームは3つのエンコード方法

  • application/x-www-form-urlencoded(デフォルト)
  • multipart/form-data
  • text/plain

追加作業が行われていたapplication/jsonしかし、それは放棄されました。

(HTML フォーム送信以外の手段を使用して生成された HTTP リクエストでは、他のエンコードが可能です。JSON は Web サービスで使用される一般的な形式であり、SOAP を使用しているものもあります。)

フォーマットの詳細はほとんどの開発者にとって重要ではありません。重要な点は次のとおりです。

  • 決して使用しないでくださいtext/plain

クライアント側のコードを記述する場合:

  • multipart/form-dataフォームに<input type="file">要素が含まれている場合に使用します
  • multipart/form-dataまたはを使用することもできますapplication/x-www-form-urlencodedが、application/x-www-form-urlencodedより効率的です

サーバー側のコードを記述する場合:

  • 事前に作成されたフォーム処理ライブラリを使用する

ほとんどの場合 (Perl のものCGI->paramや PHP の$_POSTスーパーグローバルによって公開されるものなど)、違いは自動的に処理されます。サーバーが受信した生の入力を解析する必要はありません。

両方の形式を処理できないライブラリが見つかることもあります。Node.jsのフォームデータを処理する最も人気のあるライブラリはボディパーサーマルチパートリクエストを処理できません (ただし、処理できる代​​替手段を推奨するドキュメントがあります)。


生のデータを解析または生成するためのライブラリを作成 (またはデバッグ) している場合は、フォーマットについて考慮する必要があります。興味のためにフォーマットについて知っておくのも良いでしょう。

application/x-www-form-urlencodedURL の末尾のクエリ文字列とほぼ同じです。

multipart/form-dataかなり複雑ですが、ファイル全体をデータに含めることができます。結果の例は、HTML 4 仕様

text/plainHTML 5で導入され、デバッグにのみ役立ちます。スペック:これらはコンピュータによって確実に解釈できるものではなく、他のツール(例えばネットワークパネルそのためには、ほとんどのブラウザの開発者ツールにある .php の方が適しています。

おすすめ記事