multipart/form-data
from Content-Type
一度のHTTP通信で、複数のdataを一度に扱う
例えば、text fileとJSONを一度に送信する
例えば、複数枚の画像を一度に送信する
個別で送るならmultipart/form-dataを使わずともContent-Typeで指定すればできる
file uploadの際によく使われる
RFC2388
こういうformを作ると
code:html
<form action="http://server.dom/cgi/handle" enctype="multipart/form-data" method="post">
<input type="text" name="submitter">
<input type="file" name="pics">
</form>
こういうふうにRequestが作られる
code:http_request
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="submitter"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"
Content-type: multipart/mixed, boundary=BbC04y
--BbC04y
Content-disposition: attachment; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--BbC04y
Content-disposition: attachment; filename="file2.gif"
Content-type: image/gif
Content-Transfer-Encoding: binary
...contents of file2.gif...
--BbC04y--
--AaB03x--
boundary=のところにランダムな文字列が生成され、それをデータを見分けるための境界値として使用される
問題は起きなさそうだが、なんかへんてこだなmrsekut.icon
コレをboundery parameterとか、boundary文字列などと呼ぶ
本来はインデントは含まれないが見やすいようにmrsekut.iconがそうしている
上の例では1つ目のデータは、
name="submitter"というkey
Joe Blowというvalue
2つ目のデータのkeyは、name="pics"という感じ
keyってなに?
参考
フォームよるファイルアップロードの仕様 - Jakarta Commons FileUploadの利用手順
https://developer.mozilla.org/ja/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data