column

ITコラム

Data transferring

プログラミングノウハウ

2017.02.15

HTML【フォーム】5~input要素(8)ファイル送信のための部品

今回は、input要素で作る部品の中で、ファイルを送信するための部品(file)についてまとめます。

フォームについては、こちらのページもご参照下さい。

HTML 【フォーム】1 ~ フォームの概要とform要素の属性一覧
HTML 【フォーム】2 ~ form要素の使い方
HTML 【フォーム】3 ~ form要素で使う主な属性の使い方
HTML 【フォーム】4 ~ fieldset要素とlegend要素
HTML 【フォーム】5 ~ input要素(1)フォーム部品一覧
HTML 【フォーム】5 ~ input要素(2)テキスト入力部品
HTML 【フォーム】5 ~ input要素(3)ラジオボタンとチェックボックス
HTML 【フォーム】5 ~ input要素(4)日時の入力部品
HTML 【フォーム】5 ~ input要素(5)数値の入力部品
HTML 【フォーム】5 ~ input要素(6)レンジ(range)の入力部品
HTML 【フォーム】5 ~ input要素(7)色(color)の入力部品
HTML 【フォーム】5 ~ input要素(8)ファイル送信のための部品( 本ページ )
HTML 【フォーム】5 ~ input要素(9)隠し情報(hidden)
HTML 【フォーム】5 ~ input要素(10)ボタン(submit、reset、button)
HTML 【フォーム】5 ~ input要素(11)画像ボタン(image)
HTML 【フォーム】6 ~ button要素で作るボタン
HTML 【フォーム】7 ~ ボタンの作り方比較とJavaScriptでアラート表示
HTML 【フォーム】8 ~ セレクトリスト
HTML 【フォーム】9 ~ 入力候補(datalist)
HTML 【フォーム】10 ~ テキストエリア(textarea)
HTML 【フォーム】11 ~ ラベル(label)
HTML 【フォーム】12 ~ 出力欄(output)
HTML 【フォーム】13 ~ 数量や割合のゲージ(meter)
HTML 【フォーム】14 ~ 進捗状況を示すプログレスバー(progress)
HTML 【フォーム】15 ~ キーを発行して暗号化(keygen)
HTML 【フォーム】16 ~ CSSでフォームを整える

なお、未経験からITエンジニアへの就職に興味がある方や未経験からプログラミングを効率よく学びたいと考えている方は、就職率98.3%で受講料無料のプログラミングスクールプログラマカレッジもおすすめです。

1.ファイル送信のための

ファイルをアップロードするためのinput要素のtype属性の値(file)は、以前からある属性値です。

type属性の値 部品の種類
input要素で作る
ファイルアップロードのための部品
type = ”file” ファイルアップロードのための入力フォーム

 
対応ブラウザなら、ファイルを選択するためのダイアログが開いて、アップロードファイルを選択することができます。
HTML フォーム input要素 ファイル送信のための部品 プログラマカレッジ
上の表示に対するhtmlコードは、以下の通りです。

<input type="file">

画面ロード時に、アップロードファイル選択用のボタンがデフォルト表示され、そのボタンをクリックすると、上記のダイアログが表示されます。

▲目次へ戻る

2.type以外の属性で機能を追加

type属性以外の属性を使って、機能を追加することができます。

accept属性 サーバが受け入れるファイル形式をMIMEタイプで指定する
, (カンマ)で複数指定も可能
multiple属性 ファイルの複数選択を可能にする
required属性 必須入力項目にする(未記入だと送信不可となる)
autofocus属性 HTML文書のロード後すぐにフォーカス(記入のために選択された状態に)する
form属性 form要素の外に出してレイアウトする
autocomplete属性 オートコンプリート機能(履歴から入力を予測する機能)の設定をする
disabled属性 使用不可の状態にする

▲目次へ戻る

3.method属性とenctype属性

ファイルを送信してもらう場合に、form要素で忘れてはならない指定があります。
method属性の指定とenctype属性の指定です。

●method属性をpostに指定します。

●enctype属性をmultipart/form-dataに指定します。

両方とも必要な指定で、どちらかでも欠けるとファイル送信ができなくなるので注意が必要です。

<form method="post" enctype="multipart/form-data">

method=”post”は、容量の大きなデータを送信できる送信方法を指定しています。
method属性は、フォームデータの送信方法を指定する属性で、デフォルト値はgetなので、method属性の指定を省略するとmethod=”get”になります。
ところが、method=”get”で指定すると、データ量が多いファイル情報は送信できません。
ですので、ファイル送信のための部品を作成する際には、form要素でmethod=”post”を指定することが必須となります。
method属性については、HTML 【フォーム】3 ~ form要素で使う主な属性の使い方 2.method属性をご参照下さい。

enctype=”multipart/form-data”は、ファイル送信をするためのデータ形式を指定しています。
enctype属性は、送信時のデータ形式をMIMEタイプで指定する属性で、デフォルト値はapplication/x-www-form-urlencodedなので、enctype属性の指定を省略するとenctype=”application/x-www-form-urlencoded”になります。
ところが、enctype=”application/x-www-form-urlencoded”で指定すると、ファイル情報のデータ形式と違うため、ファイル送信ができません。
ですので、ファイル送信のための部品を作成する際には、form要素でenctype=”multipart/form-data”を指定することが必須となります。
enctype属性については、HTML 【フォーム】3 ~ form要素で使う主な属性の使い方 3.enctype属性をご参照下さい。

method属性とenctype属性の他に、<input type=”file”> には次のようなルールがあります。

・accept属性は、MIMEタイプの他に、次の3つの値も指定できます。
 そして、MIMEタイプと同じように、カンマ(,)で区切って複数指定できます。
 「image/*」 :画像ファイル全般
 「video/*」 :動画ファイル全般
 「audio/*」 :音声ファイル全般

・multiple属性で、ユーザは複数のファイルを選択できますが、複数選択の方法は、WinユーザはCtrlキーを、MacユーザはShiftを押しながら複数選択する方法になります(ので、複数選択可能とする場合は、操作方法を表示した方が親切です)。

▲目次へ戻る

4.fileで入力

●<input type=”file”>で入力欄を作ると、ブラウザで次のように表示されます。
HTML フォーム input要素 ファイル送信のための部品 プログラマカレッジ
選択ボタンをクリックすると、ファイルを選択するためのダイアログが開きます。
HTML フォーム input要素 ファイル送信のための部品 プログラマカレッジ
上の表示に対するhtmlコードは、以下の通りです。

<form method="post" enctype="multipart/form-data">
<input type="file" name="test1">
<input type="submit" value="送信">
</form>

name属性で、test1という部品名を付けています。name属性を指定しないとデータの送信が行えないので、name属性の指定は必須です。

form要素で、method=”post”、enctype=”multipart/form-data”の指定をしています。
これらは、<input type=”file”>を使用する際に忘れてはならない必須の指定です。

●accept属性でファイル形式(image/png, image/gif, image/jpeg)を指定すると、ブラウザでファイル選択のダイアログが次のように表示されます。
HTML フォーム input要素 ファイル送信のための部品 プログラマカレッジ
実際には、次のダイアログで表示されている分のファイルが入っているので、上のダイアログでは、accept属性の指定に合うファイルのみが表示されていたのが分かります。
HTML フォーム input要素 ファイル送信のための部品 プログラマカレッジ
上の表示に対するhtmlコードは、以下の通りです。

<form method="post" enctype="multipart/form-data">
<input type="file" name="test2" accept="text/plain,image/jpeg">
<input type="submit" value="送信">
</form>

accept属性で指定したJPGファイルとTXTファイルだけが選択できるようになっています。

▲目次へ戻る

無料説明会

SHARE

最新記事

無料説明会に参加してみる

INTERNOUS,inc. All rights reserved.

無料オンライン説明会へ