formタグのenctype属性についてのメモ

formタグではenctypeに以下の値を指定することによってフォームデータの送信方法を指定する。

  • application/x-www-form-urlencoded
  • multipart/form-data

application/x-www-form-urlencoded

formの値がurlパラメータとして送信される。
enctypeを省略した場合は、この値になる。

ただし、フォームデータにファイルを含む場合、application/x-www-form-urlencodedでは送信できない。

multipart/form-data

このエンコードで送られたフォームのデータは、URLエンコードではなく、次のようなMIMEのマルチパートデータとしてプログラムに届きます。

Content-Type: multipart/form-data; boundary=-AabbZ

---AabbZ
Content-Disposition: form-data; name="username"

Masahide Kanzaki
---AabbZ
Content-Disposition: form-data; name="submitfile"; filename="myfile.txt"
Content-Type: text/plain

This is a sample file....
(ファイルの中身)
---AabbZ--

マルチパートのデータは、この例のように「境界(boundary)」となる行でデータ項目が区切られ、それぞれがContent-Dispositionという説明情報などのあとに実際のデータが続くという形を取ります。処理方法の詳細はここでは取り上げませんが、このようにするとユーザーにオンラインで情報を入力してもらわなくても、あらかじめ必要事項を書き込んだファイルを用意してもらい、それをアップロードしてもらうという手段が提供できます(MIMEのマルチパートの詳細に
ついてはRFC 2045を参照)。
エンコードのタイプとファイル送信 フォームデータの送信 -- ごく簡単なHTMLの説明