multipart/form-dataの場合は、どうやってファイルを抽出するかというのが課題となる。
Content-type.htmlは、
これまで通り、enctype="multipart/form-data"。
action.cは、
"CONTENT_TYPE"が"multipart/form-data"かどうかチェック。
その後ろにくっついているboundaryを抽出。
ややこしいのが、その前に2つ"--"を付けたものが実際の区切り線。
リクエストボディを読み込んで、区切り線を見つけたら、今度は"Content-Type"があるかチェック。
Chromeの場合、ファイルの時はこれがあるみたいなのでこうしてるけど、他のブラウザだと違うかも。
その先、2度の連続改行があって、その先からファイルの内容が始まる。
次の区切り線までファイルとして抽出するという感じ。
これでsubmitすると、
このように取り出せる。
今回はテキストファイルだったので、あえてこの方法で取り出せたけど、おそらくバイナリだと上手くいかない。
Sample/cgi/Content-type/multipart_form-data/src/Content-type at master · bg1bgst333/Sample · GitHub