multipart/form-dataの中身

formでenctype='multipart/form-data'を指定したときにのpostフォーマットのメモ

実験用cgi

以下の内容のcgiにアクセスして、ファイルアップロードとtextareaの内容を標準入力から取り出す

#!/bin/sh
cat <<HTML
Content-Type: text/html

<form method=post enctype='multipart/form-data'>
<input name=f type=file><input type=submit><br>
<textarea name=t cols=80 rows=20>
`test &#36;REQUEST_METHOD = POST && cat`
</textarea></form>
HTML

Firefox/Operaの場合

-----------------------------86626924567
Content-Disposition: form-data; name="f"; filename="a.txt"
Content-Type: text/plain

これはファイルの内容
-----------------------------86626924567
Content-Disposition: form-data; name="t"

これは入力テキスト
-----------------------------86626924567--

IEの場合

基本的に同じだがfilename=の部分がフルパスになっている

Content-Disposition: form-data; name="f"; filename="D:\tmp\a.txt"

おぼえがき

multipart/form-dataを指定すると%xxの形式にならない
(なのでファイルアップロード以外でもUTF-8の長文の場合は指定するとお得)
ファイルアップロードではContent-Type:がつくがtextareaではつかない
ファイル名の取り出しはIEだけ別処理が必要