ファイルを提出する

ファイル内容をフォームとして提出する方法です。
input要素を使います(記述例)。
他のinput要素とは違い、ファイルを送信するにはform要素にも属性を追加しなければなりません。

ファイルを送信するためのinput要素内の属性

type

input要素のtypeは「file」とします。 こうするとファイル選択用のボタン(選択などと表示されます)が表示され、 ブラウザによってはテキストボックスが表示されます。
テキストボックスはブラウザによってreadonlyになっている場合があります。

formに追加しなければならない属性

enctype

書式:enctype = content-type

method属性値がpostの場合にサーバに提出する際のMIMEタイプを指定します。 何も指定していない場合は "application/x-www-form-urlencoded"となっています。 input要素でtype="file"のものと組合せる場合、 この値に "multipart/form-data"を指定します。

accept

書式:accept = content-type-list

フォームを処理するサーバが正確に処理するMIMEタイプを、コンマ区切りで列挙して指定します。 サーバに送るファイル選択一覧を示す際に、 このMIMEタイプに適合しないファイルが表示されない場合があります。

記述例

次の例では、ユーザ指定ファイルの内容がどのようにフォームで提出され得るかを示してあります。 ユーザは、自分の名前と、フォームで内容を送りたいファイルの名前とを入力します。 enctype属性値が"multipart/form-data"に指定されていますので、 各ファイル内容は提出用マルチパート文書の各々独立したセクションへとパッケージ化されます。


<form action="http://server.dom/cgi/handle"
    enctype="multipart/form-data"
    method="post">
  <p>
    あなたのお名前は? <input type="text" name="name_of_sender">
    送りたいファイルは? <input type="file" name="name_of_files">
  </p>
</form>