検索
ホームページウェブフロントエンドH5 チュートリアルHTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明

この記事では主に HTML5 FormData メソッドの紹介とファイルアップロード例の実装について紹介します。興味のある方は学習してください。

XMLHttpRequest は、JavaScript に HTTP ( S) コミュニケーション。 XMLHttpRequest は、最新のブラウザーでフロントとバックの間でデータをやり取りするために一般的に使用される方法です。 2008 年 2 月に、XMLHttpRequest レベル 2 のドラフトが提案されました。前世代と比較して、いくつかの新しい機能があります。その中には、FormData があり、フォームの送信とフォームの送信のシミュレーションに使用されます。最大の利点は、バイナリ ファイルをアップロードできることです。ここでは、FormData を使用してファイルをアップロードする方法について詳しく紹介します。

FormData アップロード ファイルの例

まず、formData の基本的な使用法を見てみましょう。FormData オブジェクトは、すべてのフォーム要素の名前と値をクエリ文字列に結合し、それをバックグラウンドに送信できます。フォーム form をパラメーターとして FormData コンストラクターに渡すだけです:


var form = document.getElementById("form1");
var fd = new FormData(form);

このようにして、ajax の send() メソッドを通じて fd をバックグラウンドに直接送信できます。

以下では、通常のデータに加えて、フォームオブジェクトを FormData オブジェクトに直接渡します:


<form name="form1" id="form1">  
        <p>name:<input type="text" name="name" /></p>  
        <p>gender:<input type="radio" name="gender" value="1" />male <input type="radio" name="gender" value="2" />female</p>
        <p>stu-number:<input type="text" name="number" /></p>  
        <p>photo:<input type="file" name="photo" id="photo"></p>  
        <p><input type="button" name="b1" value="submit" onclick="fsubmit()" /></p>  
</form>  
<p id="result"></p>

上記のコードはフォームを作成し、いくつかの情報を入力し、アバターとして写真を選択し、返された結果を保存するために p を設定するだけです。

HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明

簡単にするために、データをバックグラウンドに送信するために jquery によってカプセル化された ajax を引き続き使用します:


function fsubmit() {
        var form=document.getElementById("form1");
        var fd =new FormData(form);
        $.ajax({
             url: "server.php",
             type: "POST",
             data: fd,
             processData: false,  // 告诉jQuery不要去处理发送的数据
             contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
             success: function(response,status,xhr){
                console.log(xhr);
                var json=$.parseJSON(response);
                var result = &#39;&#39;;
                result +="个人信息:<br/>name:"+json[&#39;name&#39;]+"<br/>gender:"+json[&#39;gender&#39;]+"<br/>number:"+json[&#39;number&#39;];
                 result += &#39;<br/>头像:<img  src="/static/imghwm/default1.png"  data-src="&#39; + json[&#39;photo&#39;] + &#39;"  class="lazy"      style="max-width:90%" style="border-radius: 50%;" / alt="HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明" >&#39;;
                 $(&#39;#result&#39;).html(result);
             }
        });
        return false;
    }

上記のコードのserver.phpは、ajaxリクエストを受信し、受信したリクエストを返すサーバー側のファイルです。具体的には次のとおりです:


<?php

$name = isset($_POST[&#39;name&#39;])? $_POST[&#39;name&#39;] : &#39;&#39;;  
$gender = isset($_POST[&#39;gender&#39;])? $_POST[&#39;gender&#39;] : &#39;&#39;;
$number = isset($_POST[&#39;number&#39;])? $_POST[&#39;number&#39;] : &#39;&#39;;  
$filename = time().substr($_FILES[&#39;photo&#39;][&#39;name&#39;], strrpos($_FILES[&#39;photo&#39;][&#39;name&#39;],&#39;.&#39;));  
$response = array();

if(move_uploaded_file($_FILES[&#39;photo&#39;][&#39;tmp_name&#39;], $filename)){  
    $response[&#39;isSuccess&#39;] = true;  
    $response[&#39;name&#39;] = $name;  
    $response[&#39;gender&#39;] = $gender;
    $response[&#39;number&#39;] = $number;  
    $response[&#39;photo&#39;] = $filename;  
}else{  
    $response[&#39;isSuccess&#39;] = false;  
}  
echo json_encode($response);

?>

情報を入力したら、ページ上で次の効果​​を得ることができます。また、サーバー側の対応するフォルダーにアップロードされた写真を見つけることもできます。

HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明

ネイティブ JavaScript 愛好家であれば、もちろん上記の機能を実現することもできます。以下は簡単な JavaScript 実装コードです:


function fsubmit() {
    var form=document.getElementById("form1");
    var formData=new FormData(form);
    alert(formData.name);
    var oReq = new XMLHttpRequest();
    oReq.onreadystatechange=function(){
      if(oReq.readyState==4){
        if(oReq.status==200){
            console.log(typeof oReq.responseText);
            var json=JSON.parse(oReq.responseText);
            var result = &#39;&#39;;
            result +="个人信息:<br/>name:"+json[&#39;name&#39;]+"<br/>gender:"+json[&#39;gender&#39;]+"<br/>number:"+json[&#39;number&#39;];
             result += &#39;<br/>头像:<img  src="/static/imghwm/default1.png"  data-src="&#39; + json[&#39;photo&#39;] + &#39;"  class="lazy"      style="max-width:90%" style="border-radius: 50%;" / alt="HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明" >&#39;;

             $(&#39;#result&#39;).html(result);
        }
      }
    };
    oReq.open("POST", "server.php");
    oReq.send(formData); 
    return false;
}

FormData オブジェクト メソッドの紹介

FormData に加えて。新しいオブジェクトを作成する場合は、フォームをパラメータとして直接渡す以外にも、他の関数があります。インターネット上の FormData に関する記事のほとんどは append() メソッドについてのみ言及していますが、FormData オブジェクトにはどのようなメソッドがあるのでしょうか?コンソールでは一目でわかります:

HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明

コンソールの後、FormData オブジェクトには実際にそのようなメソッドがあることがわかりました。そのため、真実を知るにはまだ自分たちでテストする必要があります。以下ではこれらのメソッドについて説明します。 1 つずつ:

1. append ()

append() メソッドは、キーと値のペアを FormData オブジェクトに追加するために使用されます:


fd.append(&#39;key1&#39;,"value1");
fd.append(&#39;key2&#39;,"value2");

fd は、新しい空の FormData オブジェクトです。オブジェクト、またはフォーム form または他のキーと値のペアがすでに含まれている場合もあります。

2. set()

対応するキー key と対応する値 value(s) を設定します


fd.set(&#39;key1&#39;,"value1");
fd.set(&#39;key2&#39;,"value2");

2 つの違いは、append() メソッドと少し似ています。指定されたキー値が存在する場合、append() メソッドは新しく追加されたすべてのキーと値のペアを最後に追加し、set() メソッドは以前に設定されたキーと値のペアを上書きします。引き続き例を比較しながら、前の形式に基づいて新しいキーと値のペアを append() または set() します:


fd.append(&#39;name&#39;,"will");

キー名を持つ 2 つのキーと値のペアがあります:

HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明


fd.set(&#39;name&#39;,"will");

キー名を持つキーと値のペアは 1 つだけです:

HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明

上記は、append() と set() の違いです。設定されたキー値が存在しない場合、両者の効果は同じです。

3. delete()

は、削除するキー値の名前を示すパラメーターを受け取ります。同じキー値が複数ある場合、それらはまとめて削除されます:


rree

名前情報。フォーム内とappend()で追加した名前の情報を削除します。

4. get() と getAll()

は、検索するキーの名前を示すパラメーターを受け取り、キーに対応する最初の値を返します。同一のキーが複数ある場合は、このキーに対応するすべての値が返される必要があります。

同様に上記のフォームフォームに基づいています:


fd.append(&#39;name&#39;,&#39;will&#39;);
fd.delete(&#39;name&#39;);


fd.append(&#39;name&#39;,&#39;will&#39;);
console.log(fd.get(&#39;name&#39;)); // sean

5, has()

该方法也接收一个参数,同样是 key 的名称,返回一个Boolean 值, 用来判断FormData 对象是否含有该 key。以上面的form为例:


console.log(fd.has(&#39;name&#39;)); // true
console.log(fd.has(&#39;Name&#39;)); // false

6、keys()

该方法不需要接收参数,返回一个迭代器,通过这个迭代器,我们可以遍历FormData 对象中所有的 key。以上面的form为例:


for (var key of fd.keys()) {
           console.log(key); 
        }

结果为:

name
gender
number
photo

7、values()

有遍历 key 的迭代,当然也就少不了遍历 value 的迭代器了。values()就是遍历value 的迭代器,用法与 keys() 类似:


for (var value of fd.values()) {
           console.log(value); 
        }

结果:

HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明

8、entries()

有遍历 key 的迭代器,也有遍历 value 的迭代器,为何不搞一个两者一起的呢!entries()就是返回一个包含键值对的迭代器:


for(var pair of fd.entries()) {
           console.log(pair[0]+ &#39;, &#39;+ pair[1]); 
        }

结果:

HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明

FormData兼容性问题

由于 FormData 是 XMLHttpRequest Level 2 新增的接口,现在 低于IE10 的IE浏览器不支持 FormData ,至于 上面介绍的 FormData 对象的方法经过测试,在 IE 浏览器中都不支持,具体的各大浏览器的支持情况可以参照下图:

HTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明

以上がHTML5 FormDataの使い方の詳しい説明とファイルアップロードの実装手順の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
H5とHTML5の接続:類似性と相違点H5とHTML5の接続:類似性と相違点Apr 24, 2025 am 12:01 AM

H5とHTML5は異なる概念です。HTML5は、新しい要素とAPIを含むHTMLのバージョンです。 H5は、HTML5に基づくモバイルアプリケーション開発フレームワークです。 HTML5はブラウザを介してコードを解析およびレンダリングしますが、H5アプリケーションはコンテナを実行し、JavaScriptを介してネイティブコードと対話する必要があります。

H5コードの構成要素:キー要素とその目的H5コードの構成要素:キー要素とその目的Apr 23, 2025 am 12:09 AM

HTML5の重要な要素には、最新のWebページの構築に使用される、、,,,,などが含まれます。 1.ヘッドコンテンツを定義します。2。リンクをナビゲートするために使用されます。3。独立した記事のコンテンツを表します。4。ページコンテンツを整理します。5。サイドバーコンテンツを表示します。

HTML5およびH5:一般的な使用法の理解HTML5およびH5:一般的な使用法の理解Apr 22, 2025 am 12:01 AM

HTML5とHTML5の略語であるHTML5とH5の間に違いはありません。 1.HTML5はHTMLの5番目のバージョンであり、Webページのマルチメディア関数とインタラクティブ機能を強化します。 2.H5は、HTML5ベースのモバイルWebページまたはアプリケーションを参照するためによく使用され、さまざまなモバイルデバイスに適しています。

HTML5:現代のウェブのビルディングブロック(H5)HTML5:現代のウェブのビルディングブロック(H5)Apr 21, 2025 am 12:05 AM

HTML5は、W3Cによって標準化されたHyperText Markup言語の最新バージョンです。 HTML5は、新しいセマンティックタグ、マルチメディアサポート、フォームの強化、Web構造の改善、ユーザーエクスペリエンス、SEO効果を導入します。 HTML5は、Webページ構造をより明確にし、SEO効果をより良くするために、、、、、、などの新しいセマンティックタグを導入します。 HTML5はマルチメディア要素をサポートしており、サードパーティのプラグインは不要で、ユーザーエクスペリエンスと読み込み速度が向上します。 HTML5はフォーム関数を強化し、ユーザーエクスペリエンスを向上させ、フォーム検証効率を向上させるなどの新しい入力タイプを導入します。

H5コード:クリーンで効率的なHTML5の書き込みH5コード:クリーンで効率的なHTML5の書き込みApr 20, 2025 am 12:06 AM

クリーンで効率的なHTML5コードを書き込む方法は?答えは、タグのセマンティック、構造化されたコード、パフォーマンスの最適化、一般的な間違いを回避することにより、一般的な間違いを避けることです。 1.コードの読みやすさとSEO効果を改善するには、セマンティックタグなどを使用します。 2。適切なインデントとコメントを使用して、コードを構造化して読みやすいままにします。 3.不必要なタグを減らし、CDNを使用してコードを圧縮することにより、パフォーマンスを最適化します。 4.タグが閉じていないなどの一般的な間違いを避け、コードの有効性を確認してください。

H5:ウェブ上のユーザーエクスペリエンスをどのように強化するかH5:ウェブ上のユーザーエクスペリエンスをどのように強化するかApr 19, 2025 am 12:08 AM

H5は、マルチメディアサポート、オフラインストレージ、パフォーマンスの最適化により、Webユーザーエクスペリエンスを向上させます。 1)マルチメディアサポート:H5と要素は、開発を簡素化し、ユーザーエクスペリエンスを向上させます。 2)オフラインストレージ:WebStorageとIndexEdDBは、エクスペリエンスを改善するためにオフラインで使用できるようにします。 3)パフォーマンスの最適化:ウェブワーカーと要素は、パフォーマンスを最適化して帯域幅の消費を削減します。

H5コードの分解:タグ、要素、属性H5コードの分解:タグ、要素、属性Apr 18, 2025 am 12:06 AM

HTML5コードは、タグ、要素、属性で構成されています。1。タグはコンテンツタイプを定義し、などの角度ブラケットに囲まれています。 2。要素は、startタグ、内容、および内容などのエンドタグで構成されています。 3。属性は、開始タグのキー値のペアを定義し、ような関数を強化します。これらは、Web構造を構築するための基本ユニットです。

H5コードの理解:HTML5の基礎H5コードの理解:HTML5の基礎Apr 17, 2025 am 12:08 AM

HTML5は、最新のWebページを構築するための重要なテクノロジーであり、多くの新しい要素と機能を提供します。 1。HTML5は、Webページの構造とSEOを強化するなどのセマンティック要素を導入します。 2。プラグインなしのマルチメディア要素と埋め込みメディアをサポートします。 3.フォームは、新しい入力タイプと検証プロパティを強化し、検証プロセスを簡素化します。 4.オフラインおよびローカルストレージ機能を提供して、Webページのパフォーマンスとユーザーエクスペリエンスを向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。