multipart/form-data

multipart/form-dataの場合は、どうやってファイルを抽出するかというのが課題となる。

POST - HTTP | MDN

Content-type.htmlは、

これまで通り、enctype="multipart/form-data"。
action.cは、

"CONTENT_TYPE"が"multipart/form-data"かどうかチェック。
その後ろにくっついているboundaryを抽出。
ややこしいのが、その前に2つ"--"を付けたものが実際の区切り線。
リクエストボディを読み込んで、区切り線を見つけたら、今度は"Content-Type"があるかチェック。
Chromeの場合、ファイルの時はこれがあるみたいなのでこうしてるけど、他のブラウザだと違うかも。
その先、2度の連続改行があって、その先からファイルの内容が始まる。
次の区切り線までファイルとして抽出するという感じ。

これでsubmitすると
これでsubmitすると

これでsubmitすると、

このように取り出せる
このように取り出せる

このように取り出せる。
今回はテキストファイルだったので、あえてこの方法で取り出せたけど、おそらくバイナリだと上手くいかない。

Sample/cgi/Content-type/multipart_form-data/src/Content-type at master · bg1bgst333/Sample · GitHub