フォーム <FORM> の ENCTYPE





フォームのENCTYPEは、フォームからサーバ側のCGIにどのようなデータフォーマットで送るかを決定するものです。
ENCTYPEは、現在3つが定義されています。



フォーム   ENCTYPE
  機 能送信するフォーマットを指定する。
設定例<FORM ACTION="http://ww.zzz.co.jp/scripts/abc.exe" method="post" enctype="multipart/form-data">
CGI取得

ENCTYPE で使用できる3つの値
  値 と 能書き
1
application/x-www-form-urlencoded
       ほとんどがコレ。 ディフォルトです。
2
multipart/form-data
       ファイルをアップロードする目的で使用する。
method=POST と併用しないと効果がない。
3
text/plain
       メールの時に使用する。
以前は利用もあったが、セキュリティ・ホールの関係とIEの利用増大(NNでは利用できたがIEは当初から利用不可だった)で近年は利用が少ない。





 【デコードの例】ENCTYPEの違いでデコードされたデータの形式が違います。

ちょっと面倒な話です。
以下は、ENCTYPEの違いでデータがどのように変わるかを示します。
CGIを作成する人のためだけ、それもかなり強い興味のある人の為の話です。

下のようなHTMLを作成します。
     <form action="test2.exe" method="post" ENCTYPE="...">
     お名前:<input type="text" size=30 name="name">
     <input type="radio" name="seibetu" value="man">男性
     <input type="radio" name="seibetu" value="woman">女性
     <textarea name="textarea2" cols="40" rows="3"></textarea>
     <input type="submit" value="送信">
     <input type="reset" value="取消">
     </form>


上記を実行すると下のような表示になります。
     
     お名前:
     男性
     女性
         


上記に下のような値を入れて実行します。
     
     お名前:
     男性
     女性
           
するとENCTYPEの違いによってサーバ側のCGIのプログラムには、下ようなコードが来ます。

    ENCTYPE=application/x-www-form-urlencoded
      name=%8ER%93c%89%D4%8Eq&seibetu=woman&textarea2=%8F%AC%82%B3%82%A2%82%AF%82%C7%97%CD%8E%9D%82%BF%81B%0D%0A%82%BB%82%CC%8F%E3%94%FC%90l%81B%0D%0A



    ENCTYPE=multipart/form-data
      -----------------------------7d0356115302a6
      Content-Disposition: form-data; name="name"

      山田花子
      -----------------------------7d0356115302a6
      Content-Disposition: form-data; name="seibetu"

      woman
      -----------------------------7d0356115302a6
      Content-Disposition: form-data; name="textarea2"

      小さいけど力持ち。
      その上美人。
      -----------------------------7d0356115302a6--



    ENCTYPE=text/plain
      name=山田花子
      seibetu=woman
      textarea2=小さいけど力持ち。
      その上美人。