





<input type=file>は、選択ファイルを表す際に使用します。
input要素のtype属性の値に file を指定すると、
要素の値は選択されたファイルのリストを表します。
各ファイルは、ファイル名、ファイルタイプ、ファイル本体で構成されます。
■属性
- name属性
- フォーム部品に名前をつけます。
- multiple属性
- 複数の値を許可するかどうかを指定します。
- accept属性
- ファイルアップロードで予期されるファイルタイプのヒントを指定します。
どのファイルタイプが受け入れられるかのヒントをユーザーエージェントに提供します。
accept属性を指定する場合、カンマ( , )区切りで値を指定します。
値には以下の文字列を指定できます。- “audio/*” …… 音声ファイルが受け入れられることを示します。
- “video/*” …… ビデオファイルが受け入れられることを示します。
- “image/*” …… 画像ファイルが受け入れられることを示します。
- パラメータのない有効なMIMEタイプ文字列 …… 指定されたタイプのファイルが受け入れられることを示します。
- 拡張子 …… ドット( . )で始まる文字列で拡張子を指定すると、その拡張子を持つファイルが受け入れられることを示します。
指定する文字列の大文字と小文字は区別しません。
重複して同じ値を指定することはできません。
■使用例
multiple属性は、複数の値を許可するかどうかを指定します。
multiple属性が設定されていない限り、選択したファイルのリストには複数のファイルがあってはなりません。
以下のサンプルは、multiple属性の指定の有無による違いを示しています。
multiple属性を指定しなければ選択できるファイルはひとつだけですが、
multiple属性を指定すると選択できるファイルが複数になります。
HTMLソース
<p><label>ファイル(ひとつだけ): <input type=file name=ofile></label></p>
<p><label>ファイル(複数選択可): <input type=file name=mfile multiple></label></p>
ブラウザ上の表示
■使用例
accept属性を指定すると、どのファイルタイプが受け入れられるかのヒントをユーザーエージェントに提供できます。
特定の形式のデータに制限したい場合には、MIMEタイプと対応する拡張子の両方を指定することが推奨されています。
以下のサンプルは、Microsoft WordドキュメントをOpen Document Formatファイルに変換するアプリケーションを想定しています。
Microsoft Wordドキュメントには、様々なMIMEタイプ、様々な拡張子の可能性があるため、それらをaccept属性の値にカンマ区切りで指定してします。
HTMLソース
<input type="file" accept=".doc,
.docx,
.xml,
application/msword,
application/vnd.openxmlformats-officedocument.wordprocessingml.document">
ブラウザ上の表示
クライアントから受信したデータの扱い
クライアントから受信したデータは慎重に扱う必要があります。
ファイルの拡張子やMIMEタイプだけではデータを完全には判別できないため、
accept属性によるデータのチェックを無条件に信頼するべきではできません。
例えば、拡張子「.dat」を使用する形式は数え切れないほどありますし、
Microsoft Word文書でなくても拡張子「.doc」を付けることはできます。
また、多くのファイル形式には正式に登録されたMIMEタイプがなく、
実際には異なるMIMEタイプを使用してラベル付けされていることが少なくありません。
ユーザーに悪意が無く、ユーザーエージェントがaccept属性を完全にサポートしているとしても、
クライアントから受信したデータは、予期しない形式である可能性を考慮して扱う必要があります。
■関連項目
- <form> …… フォームを表す
- <label> …… フォーム入力欄のキャプションを表す
- <input> …… フォーム入力欄を表す
- <input type=hidden> …… 非表示データを表す
- <input type=text> …… 1行プレーンテキストの入力欄を表す
- <input type=search> …… 検索用テキストの入力欄を表す
- <input type=tel> …… 電話番号の入力欄を表す
- <input type=url> …… URLの入力欄を表す
- <input type=email> …… 電子メールアドレスの入力欄を表す
- <input type=password> …… パスワードの入力欄を表す
- <input type=date> …… 日付の入力欄を表す
- <input type=month> …… 月の入力欄を表す
- <input type=week> …… 週の入力欄を表す
- <input type=time> …… 時刻の入力欄を表す
- <input type=datetime-local> …… ローカル日時の入力欄を表す
- <input type=number> …… 数値の入力欄を表す
- <input type=range> …… レンジ入力欄を表す
- <input type=color> …… 色の入力欄を表す
- <input type=checkbox> …… チェックボックスの入力欄を表す
- <input type=radio> …… ラジオボタンの入力欄を表す
- <input type=file> …… 選択ファイルを表す
- <input type=submit> …… フォーム送信ボタンを表す
- <input type=image> …… 画像ボタンを表す
- <input type=reset> …… リセットボタンを表す
- <input type=button> …… 汎用ボタンを表す
- <input maxlength=文字数> …… 入力を許容する最大文字数を指定する
- <input minlength=文字数> …… 入力を許容する最小文字数を指定する
- <input size=サイズ> …… 入力欄のサイズを指定する
- <input readonly> …… 読み取り専用にする
- <input required> …… 入力必須にする
- <input multiple> …… 複数選択可にする
- <input pattern=入力パターン> …… 入力を許容するパターンを指定する
- <input min=数値> …… 入力を許容する最小値を指定する
- <input max=数値> …… 入力を許容する最大値を指定する
- <input step=ステップ値> …… 入力のステップ値を指定する
- <input list=データリストID> …… データリストを紐づける
- <input placeholder=入力ヒント> …… 入力の際のヒントを表す
- <button> …… ボタンを表す
- <select> …… セレクトボックスを表す
- <datalist> …… 選択肢のデータリストを表す
- <optgroup> …… 選択肢グループを表す
- <option> …… 選択肢を表す
- <textarea> …… 複数行プレーンテキストの入力欄を表す
- <output> …… 実行結果の出力を表す
- <progress> …… タスクの進行状況を表す
- <meter> …… 既知の範囲内の測定値を表す
- <fieldset> …… フォームグループを表す
- <legend> …… フォームグループのキャプションを表す