multipart/form-data
概要
multipart/form-dataとは、電子メールの添付ファイルやHTTP通信でファイルの種別を表すのに用いられるMIMEタイプの一つで、HTMLフォームによるデータ送信を意味するもの。WebブラウザからWebサーバへのファイルのアップロードなどに用いられる。メールに様々な種類のファイルを添付できるMIME(Multipurpose Internet Mail Extensions)では、「MIMEタイプ」という識別名でデータ形式を指定する。これは「タイプ/サブタイプ」という形式の文字列で、HTMLであれば「text/html」となる。HTTPでもこの仕様が利用され、HTTPヘッダのContent-TypeフィールドにMIMEタイプを記述する。
「multipart」タイプは複合データを表し、複数のデータの組み合わせを一度に伝送したい場合に用いる。「form-data」サブタイプはフォームから送信であることを表し、フォームへの入力内容や指定したファイルなどを組み合わせてサーバに送信する場合に用いられる。
HTMLのform要素の属性で「enctype="multipart/form-data"」を指定し、HTTPリクエストヘッダでは「Content-Type: multipart/form-data; boundary=境界文字列」のように指定する。リクエストボディ中、境界文字列の先頭に「--」を付加した文字列が現れると、そこがデータの境界とみなされる。例えば「boundary=qawsedrf123」であれば、「--qawsedrf123」が区切り文字として用いられる。
境界文字列に続けて各データの本体を記載していくが、先頭にデータ形式やファイル名などを指定するヘッダ部を付加することができる。HTTPリクエストヘッダと同じ形式で、「Content-Type:image/jpeg」のようにMIMEタイプの指定、「Content-Disposition: form-data; name="フィールド名" filename="ファイル名"」のようにフォーム上のフィールド名やファイル名の指定を行う。