multipart/form-dataについて

HTTPではブラウザとサーバーでデータのやり取りをする際にヘッダーにデータの種類を記載することによって、どんなデータを扱うかを決めます。
この時にコンテンツの種類を指定するために MIME Type という形式が利用されており、この値をContent-Typeヘッダーに付与して送信先にコンテンツの種類を教えます。
MIME Typeの種類についてはテキストファイルのtext/plain、HTMLのtext/html、画像ファイルのimage/pngなどがあります。
今回のタイトルのmultipart/form-dataは複合データ型で、1度の通信で複数の種類を一度に扱うことができます。

multipart/form-dataは主にファイルアップロードで利用されます。
HTTPのヘッダには下記のような値が入っています。

Content-Ttpe: multipart/form-data, boundary=----WebKitFormBoundaryabCdef

ここでboundaryに入っている値はコンテンツの境界を表す文字列になります。データ形式が複合型なので1回の送信データで復数の種類のデータが含まれる可能性があるため、異なるデータを分けるために使います。具体的にはHTTPのボディーが下記のようになります。

------WebKitFormBoundaryabCdef
Content-Disposition: form-data; name="フォームデータ名"

フォームデータの内容

------WebKitFormBoundaryabCdef
Content-Disposition: form-data; name="フォーム名"; filename="ファイル名"
Content-Type: text/plain

フォームデータの内容(ファイルの内容)

------WebKitFormBoundaryabCdef--

nameに各フォームデータの名前、ファイルアップロードの場合にはfilenameにファイル名が入ります。boundary文字列の先頭に「--」を付けて復数のデータをまとめて送ります。最後のboundary文字列には末尾にも「--」が必要となります。


この記事が気に入ったらサポートをしてみませんか?