<input type=file>は、選択ファイルを表す際に使用します。
input要素のtype属性の値に file を指定すると、
要素の値は選択されたファイルのリストを表します。
各ファイルは、ファイル名、ファイルタイプ、ファイル本体で構成されます。
指定する文字列の大文字と小文字は区別しません。
重複して同じ値を指定することはできません。
multiple属性は、複数の値を許可するかどうかを指定します。
multiple属性が設定されていない限り、選択したファイルのリストには複数のファイルがあってはなりません。
以下のサンプルは、multiple属性の指定の有無による違いを示しています。
multiple属性を指定しなければ選択できるファイルはひとつだけですが、
multiple属性を指定すると選択できるファイルが複数になります。
<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属性の値にカンマ区切りで指定してします。
<input type="file" accept=".doc,
.docx,
.xml,
application/msword,
application/vnd.openxmlformats-officedocument.wordprocessingml.document">
クライアントから受信したデータは慎重に扱う必要があります。
ファイルの拡張子やMIMEタイプだけではデータを完全には判別できないため、
accept属性によるデータのチェックを無条件に信頼するべきではできません。
例えば、拡張子「.dat」を使用する形式は数え切れないほどありますし、
Microsoft Word文書でなくても拡張子「.doc」を付けることはできます。
また、多くのファイル形式には正式に登録されたMIMEタイプがなく、
実際には異なるMIMEタイプを使用してラベル付けされていることが少なくありません。
ユーザーに悪意が無く、ユーザーエージェントがaccept属性を完全にサポートしているとしても、
クライアントから受信したデータは、予期しない形式である可能性を考慮して扱う必要があります。