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-urlencoded
URL の末尾のクエリ文字列とほぼ同じです。
multipart/form-data
かなり複雑ですが、ファイル全体をデータに含めることができます。結果の例は、HTML 4 仕様。
text/plain
HTML 5で導入され、デバッグにのみ役立ちます。スペック:これらはコンピュータによって確実に解釈できるものではなく、他のツール(例えばネットワークパネルそのためには、ほとんどのブラウザの開発者ツールにある .php の方が適しています。