multipart/form-data — HTTPでのファイルアップロード
HTMLフォームのファイルアップロードに使用されるMIMEタイプmultipart/form-dataの境界構文、バイナリパート、実践例を理解します。
Multipart
詳細な説明
multipart/form-data
multipart/form-dataは、HTMLフォームがファイルアップロードやバイナリ/テキスト混合データを送信する際に使用されるMIMEタイプです。RFC 7578で定義されています。
仕組み
リクエストボディはユニークな境界文字列で区切られた複数のパートに分割されます。各パートは独自のヘッダーとボディを持ちます。
form-urlencodedとの比較
| 特徴 | form-urlencoded | multipart/form-data |
|---|---|---|
| ファイルアップロード | 不可 | 可能 |
| バイナリデータ | 不可(エンコード必要) | 可能(生バイト) |
| オーバーヘッド | 低 | 高(境界) |
| 用途 | シンプルなフォーム | ファイルアップロード |
重要: FormData使用時にContent-Typeヘッダーを手動で設定しないでください — ブラウザが自動的にboundaryパラメータを追加します。
ユースケース
HTMLフォームにファイル入力フィールドが含まれる場合、APIに画像やドキュメントをアップロードする場合、または単一のHTTPリクエストでテキストフィールドとバイナリデータを混合する場合にmultipart/form-dataを使用します。