トップページ  > HTML Living Standard  > <input>  > type=file

★HTML Living Standard リファレンス

<input type=file> …… 選択ファイルを表す
Internet Explorer Microsoft Edge Google Chrome Safari Firefox Opera
広告

<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属性を完全にサポートしているとしても、 クライアントから受信したデータは、予期しない形式である可能性を考慮して扱う必要があります。

■関連項目

広告
Sponsors
広告
MuuMuu Domain!
ドメイン取るならお名前.com
現役エンジニアのオンライン家庭教師【CodeCamp】
サイトに広告を掲載してお小遣いが稼げる!【A8.net】
Node.jsコース
はじめてのプログラミングコース
▲ページ先頭へ
HTMLクイックリファレンスについて
© HTMQ