HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

HTMLのenctype属性とは?フォームデータのエンコード形式をわかりやすく解説

HTMLのenctype属性は、フォームから送信されるデータのエンコード形式(MIMEタイプ)を指定するための属性です。この属性は、method="post" を指定した場合にのみ有効となり、GETメソッドでは機能しません。

enctype属性には、主に以下の3つの値を指定できます。

enctype属性に指定できる値

説明
application/x-www-form-urlencodedデフォルト値。すべての文字が送信前にエンコードされます(スペースは「+」記号に変換され、特殊文字はASCII HEX値に変換されます)。
multipart/form-data文字をエンコードしません。ファイルアップロード用のコントロール(<input type="file">など)を含むフォームでは、必ずこの値を指定する必要があります。
text/plainスペースは「+」記号に変換されますが、特殊文字はエンコードされません。主にデバッグ用途で使われます。

サンプルコード

それでは、HTMLのenctype属性を使った具体的な例を見てみましょう。ここでは multipart/form-data を指定したフォームを作成しています。

<!DOCTYPE html>
<html>
<head>
<title>HTML enctype attribute</title>
<style>
   form {
      width:70%;
      margin: 0 auto;
      text-align: center;
   }
   * {
      padding: 2px;
      margin:5px;
   }
   input[type="button"] {
      border-radius: 10px;
   }
</style>
</head>
<body>
<form enctype="multipart/form-data" action="" method="post">
<fieldset>
<legend>HTML-enctype-attribute</legend>
<label for="EmailSelect">Email Id:
<input type="email" id="EmailSelect">
<input type="button" onclick="getUserEmail('david')" value="David">
<input type="button" onclick="getUserEmail('shasha')" value="Shasha"><br>
<input type="button" onclick="login()" value="Login">
</label>
<div id="divDisplay"></div>
</fieldset>
</form>
<script>
   var divDisplay = document.getElementById("divDisplay");
   var inputEmail = document.getElementById("EmailSelect");
   function getUserEmail(userName) {
      if(userName === 'david')
         inputEmail.value = 'davidMiller@MNC.com';
      else
         inputEmail.value = 'shashaGreen@MNC.com';
   }
   function login() {
      if(inputEmail.value !== '')
         divDisplay.textContent = 'Successful Login. Hello '+inputEmail.value.split("@")[0];
      else
         divDisplay.textContent = 'Enter Email Id';
   }
</script>
</body>
</html>

実行結果

上記のコードを実行すると、次のような出力が得られます。

1)メールアドレス欄が空のまま「Login」ボタンをクリックした場合:

HTMLのenctype属性とは?フォームデータのエンコード形式をわかりやすく解説

画面には「Enter Email Id(メールアドレスを入力してください)」というメッセージが表示されます。

2)メールアドレスを入力してから「Login」ボタンをクリックした場合:

HTMLのenctype属性とは?フォームデータのエンコード形式をわかりやすく解説

入力されたメールアドレスのユーザー名部分が抽出され、「Successful Login. Hello ユーザー名」というメッセージが表示されます。

まとめ

enctype属性は、フォームデータの送信方法を制御する重要な属性です。通常のテキストデータの送信であればデフォルトの application/x-www-form-urlencoded で問題ありませんが、ファイルをアップロードする場合は必ず multipart/form-data を指定することを忘れないようにしましょう。

  1. HTMLのrowspan属性とは?テーブルセルの行結合の使い方を解説

    HTMLのrowspan属性は、表(テーブル)のセルが縦方向にまたぐ行数を指定するための属性です。この属性を使用することで、複数の行にまたがるセルを作成でき、より柔軟なテーブルレイアウトを実現できます。rowspan属性を適用できるのは、td要素またはth要素のみです。それ以外のHTML要素には使用できない点に注意しましょう。rowspan属性の構文rowspan属性の基本的な構文は以下のとおりです。<タグ名 rowspan=数値></タグ名>「数値」には、セルがまたぐ行数を整数で指定します。たとえば「rowspan=2」と指定すると、そのセルは2行分の高さを持つことに

  2. HTMLのtabindex属性とは?タブ移動の順序を制御する方法を解説

    HTMLのtabindex属性は、HTMLドキュメント内の要素がTabキーでフォーカスされる順序(タブ移動の順番)を定義するための属性です。tabindexはグローバル属性に分類されるため、すべてのHTML要素に対して使用することができます。通常、Tabキーを押すと要素はHTMLの記述順にフォーカスされますが、tabindex属性を指定することで、この順序を自由にコントロールできます。値には整数を指定し、数値が小さいものから順にフォーカスされます。tabindex属性の値について正の数(1以上):指定した数値の順序でタブ移動が行われます0:HTMLの記述順にフォーカスされます(デフォルトの挙動