トップページ  > 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 を指定すると、 要素の値は選択されたファイルのリストを表します。

各ファイルは、ファイル名、ファイルタイプ、ファイル本体で構成されます。

input type=fileの場合の他の属性

multiple属性は、複数の値を許可するかどうかを指定します。 multiple属性が設定されていない限り、選択したファイルのリストには複数のファイルがあってはなりません。

accept属性を指定すると、どのファイルタイプが受け入れられるかのヒントをユーザーエージェントに提供できます。 特定の形式のデータに制限したい場合には、MIMEタイプと対応する拡張子の両方を指定することが推奨されています。

■属性

name属性
フォーム部品に名前をつけます。
multiple属性
複数の値を許可するかどうかを指定します。
accept属性
ファイルアップロードで予期されるファイルタイプのヒントを指定します。 どのファイルタイプが受け入れられるかのヒントをユーザーエージェントに提供します。 accept属性を指定する場合、カンマ( , )区切りで値を指定します。 値には以下の文字列を指定できます。
  • "audio/*" …… 音声ファイルが受け入れられることを示します。
  • "video/*" …… ビデオファイルが受け入れられることを示します。
  • "image/*" …… 画像ファイルが受け入れられることを示します。
  • パラメータのない有効なMIMEタイプ文字列 …… 指定されたタイプのファイルが受け入れられることを示します。
  • 拡張子 …… ドット( . )で始まる文字列で拡張子を指定すると、その拡張子を持つファイルが受け入れられることを示します。
指定する文字列の大文字と小文字は区別しません。 重複して同じ値を指定することはできません。

■使用例

以下のサンプルは、multiple属性の指定の有無による違いを示しています。 multiple属性を指定しなければ選択できるファイルはひとつだけですが、 multiple属性を指定すると選択できるファイルが複数になります。

HTMLソース

<p><label>ファイル(ひとつだけ): <input type=file name=ofile></label></p>
<p><label>ファイル(複数選択可): <input type=file name=mfile multiple></label></p>
↓↓↓

ブラウザ上の表示

■使用例

以下のサンプルは、Microsoft Wordドキュメントを Open Document Formatファイルに変換するアプリケーションを想定しています。 Microsoft Wordドキュメントは様々なMIMEタイプ、様々な拡張子の可能性があるため、 それらをカンマ区切りで指定してします。

HTMLソース

<input type="file"
 accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document">
↓↓↓

ブラウザ上の表示

クライアントから受信したデータは慎重に扱う

拡張子は、曖昧になる傾向があります。 例えば、「.dat」拡張子を使用する形式は数え切れないほどあります。 また、Microsoft Word文書でなくても、ファイルの名前を簡単に変更して「.doc」拡張子を付けることができます。

MIMEタイプは、信頼性が低い傾向があります。 例えば、多くのファイル形式には正式に登録されたMIMEタイプがなく、 実際には異なるMIMEタイプを使用してラベル付けされていることが少なくありません。

上記などの理由から、ユーザーに悪意が無く、 ユーザーエージェントがaccept属性を完全にサポートしているとしても、 クライアントから受信したデータは予期した形式ではない可能性があります。 そのため、accept属性によるチェックを無条件に信頼するのではなく、 クライアントから受信したデータは慎重に扱う必要があります。

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