複数ファイルアップロードのContent-Type
multipart/form-dataで複数ファイルをアップロードする際のContent-Typeヘッダーを設定します。ネストされたパートヘッダーとファイル名の処理を解説します。
Form Submissions
詳細な説明
複数ファイルアップロード
単一リクエストで複数ファイルをアップロードする場合、各ファイルはmultipart/form-dataボディ内の個別のパートになり、それぞれ独自のContent-Typeとファイル名を持ちます。
ヘッダー値
Content-Type: multipart/form-data; boundary=----FormBoundary7MA4YWxkTrZu0gW
複数ファイルのボディ構造
------FormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="files"; filename="report.pdf"
Content-Type: application/pdf
[PDFバイナリデータ]
------FormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="files"; filename="photo.png"
Content-Type: image/png
[PNGバイナリデータ]
------FormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="description"
四半期報告書とカバー写真
------FormBoundary7MA4YWxkTrZu0gW--
パートごとのContent-Type
各ファイルパートはファイルのメディアタイプを示す独自のContent-Typeヘッダーを持ちます。これはリクエストのトップレベルContent-Typeとは別です。一般的なパートタイプ:
| ファイルタイプ | パートのContent-Type |
|---|---|
application/pdf |
|
| PNG | image/png |
| JPEG | image/jpeg |
| CSV | text/csv |
| ZIP | application/zip |
| 汎用 | application/octet-stream |
ファイル名のエンコーディング
非ASCII文字を含むファイル名には、RFC 5987エンコーディングを使用します:
Content-Disposition: form-data; name="file"; filename*=UTF-8''%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88.pdf
curlの例
curl -X POST \
-F "files=@report.pdf;type=application/pdf" \
-F "files=@photo.png;type=image/png" \
-F "description=Quarterly report" \
https://api.example.com/upload
ユースケース
ドキュメント管理システム、画像ギャラリー、メール添付ファイルAPIなど、複数ファイルを受け付けるファイルアップロードエンドポイントの構築時に使用します。