欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > HTML5 FormData 方法介紹以及實(shí)現(xiàn)文件上傳示例

HTML5 FormData 方法介紹以及實(shí)現(xiàn)文件上傳示例

熱門(mén)標(biāo)簽:濟(jì)南辦理400電話 跟電銷(xiāo)機(jī)器人做同事 鄭州電銷(xiāo)外呼系統(tǒng)違法嗎 漳州人工外呼系統(tǒng)排名 農(nóng)村住宅地圖標(biāo)注 威海營(yíng)銷(xiāo)外呼系統(tǒng)招商 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)怎么安裝 中紳電銷(xiāo)智能機(jī)器人 ai電銷(xiāo)機(jī)器人連接網(wǎng)關(guān)

XMLHttpRequest 是一個(gè)瀏覽器接口,通過(guò)它,我們可以使得 Javascript 進(jìn)行 HTTP (S) 通信。XMLHttpRequest 在現(xiàn)在瀏覽器中是一種常用的前后臺(tái)交互數(shù)據(jù)的方式。2008年 2 月,XMLHttpRequest Level 2 草案提出來(lái)了,相對(duì)于上一代,它有一些新的特性,其中 FormData 就是 XMLHttpRequest Level 2 新增的一個(gè)對(duì)象,利用它來(lái)提交表單、模擬表單提交,當(dāng)然最大的優(yōu)勢(shì)就是可以上傳二進(jìn)制文件。下面就具體介紹一下如何利用 FormData 來(lái)上傳文件。

FormData 上傳文件實(shí)例

首先看一下formData的基本用法:FormData對(duì)象,可以把所有表單元素的name與value組成一個(gè)queryString,提交到后臺(tái)。只需要把 form 表單作為參數(shù)傳入 FormData 構(gòu)造函數(shù)即可:

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

這樣就可以直接通過(guò)ajax 的 send() 方法將 fd 發(fā)送到后臺(tái)。

以下創(chuàng)建了一個(gè)表單 form,表單中除了普通的數(shù)據(jù)外,還有文件上傳,我們直接將 form對(duì)象作為參數(shù)傳入FormData對(duì)象:

<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>  
<div id="result"></div>

上述代碼創(chuàng)建一個(gè)form,簡(jiǎn)單的填寫(xiě)一些信息,以及選擇一張圖片作為頭像,設(shè)置一個(gè)div來(lái)存放返回的結(jié)果。

為了簡(jiǎn)便,我們還是采用jquery封裝的ajax來(lái)向后臺(tái)傳輸數(shù)據(jù):

function fsubmit() {
        var form=document.getElementById("form1");
        var fd =new FormData(form);
        $.ajax({
             url: "server.php",
             type: "POST",
             data: fd,
             processData: false,  // 告訴jQuery不要去處理發(fā)送的數(shù)據(jù)
             contentType: false,   // 告訴jQuery不要去設(shè)置Content-Type請(qǐng)求頭
             success: function(response,status,xhr){
                console.log(xhr);
                var json=$.parseJSON(response);
                var result = '';
                result +="個(gè)人信息:<br/>name:"+json['name']+"<br/>gender:"+json['gender']+"<br/>number:"+json['number'];
                 result += '<br/>頭像:<img src="' + json['photo'] + '" height="100" style="border-radius: 50%;" />';
                 $('#result').html(result);
             }
        });
        return false;
    }

上述代碼中的 server.php 是服務(wù)器端的文件,接收ajax請(qǐng)求,并將接收結(jié)果返回,具體代碼如下:

<?php

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

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

?>

填寫(xiě)好信息后,點(diǎn)擊 submit,頁(yè)面中能得到以下效果,去服務(wù)器端對(duì)應(yīng)的文件夾下也能發(fā)現(xiàn)上傳的圖片。

如果你是原生 JavaScript 愛(ài)好者,當(dāng)然一樣能實(shí)現(xiàn)以上功能,下面是簡(jiǎn)單的JavaScript實(shí)現(xiàn)代碼:

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 = '';
            result +="個(gè)人信息:<br/>name:"+json['name']+"<br/>gender:"+json['gender']+"<br/>number:"+json['number'];
             result += '<br/>頭像:<img src="' + json['photo'] + '" height="50" style="border-radius: 50%;" />';

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

FormData 對(duì)象方法介紹

FormData 除了上面的創(chuàng)建新對(duì)象時(shí)直接將 form 作為參數(shù)傳入外,還有其他的功能。網(wǎng)上大部分關(guān)于 FormData 介紹的文章都只提到了append()方法,那么FormData 對(duì)象到底有些什么方法呢?我們console 一下就知道:

console 之后我們有重大的發(fā)現(xiàn),F(xiàn)ormData 對(duì)象竟然有這么方法,所以還是自己測(cè)試才能發(fā)現(xiàn)真相,下面就對(duì)這些方法一一進(jìn)行講解:

1、append()

append()方法用于向 FormData 對(duì)象中添加鍵值對(duì):

fd.append('key1',"value1");
fd.append('key2',"value2");

fd是 FormData 對(duì)象,可以新建的空的對(duì)象,也可以是已經(jīng)包含 form 表單或其他鍵值對(duì)。

2、set()

設(shè)置對(duì)應(yīng)的鍵 key 對(duì)應(yīng)的值 value(s)

fd.set('key1',"value1");
fd.set('key2',"value2");

看起來(lái)跟append() 方法有點(diǎn)類(lèi)似,這兩者的區(qū)別就是,當(dāng)指定的 key 值存在時(shí),append()方法是將新增的添加的所以的鍵值對(duì)最后,而set()方法將會(huì)覆蓋前面的設(shè)置的鍵值對(duì)。還是通過(guò)實(shí)例來(lái)對(duì)比,我們?cè)谇懊娴?form 的基礎(chǔ)上 append() 或 set() 新的鍵值對(duì):

fd.append('name',"will");

有兩個(gè)key為name的鍵值對(duì):

fd.set('name',"will");

只有一個(gè)key為name的鍵值對(duì):

以上就是 append() 和 set() 的區(qū)別。如果設(shè)置的key值不存在,那么兩者的效果是一樣的。

3、delete()

接收一個(gè)參數(shù),表示你要?jiǎng)h除的 key 值的名字,如果有多個(gè)相同 key 值,會(huì)一并刪除:

fd.append('name','will');
fd.delete('name');

form 中的 name 信息以及通過(guò)append() 新增的name 的信息都被刪除了。

4、get() 和 getAll()

接收一個(gè)參數(shù),表示需要查找的 key 的名稱(chēng),返回第一個(gè)該 key 對(duì)應(yīng)的 value 值。如果有多個(gè)相同的 key, 而且要返回所有的這個(gè) key 對(duì)應(yīng)的 value 值。

同樣以上面的 form 表單為基礎(chǔ):

fd.append('name','will');
console.log(fd.get('name')); // sean
fd.append('name','will');
console.log(fd.getAll('name')); // ["sean", "will"]

5、has()

該方法也接收一個(gè)參數(shù),同樣是 key 的名稱(chēng),返回一個(gè)Boolean 值, 用來(lái)判斷FormData 對(duì)象是否含有該 key。以上面的form為例:

console.log(fd.has('name')); // true
console.log(fd.has('Name')); // false

6、keys()

該方法不需要接收參數(shù),返回一個(gè)迭代器,通過(guò)這個(gè)迭代器,我們可以遍歷FormData 對(duì)象中所有的 key。以上面的form為例:

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

結(jié)果為:

name
gender
number
photo

7、values()

有遍歷 key 的迭代,當(dāng)然也就少不了遍歷 value 的迭代器了。values()就是遍歷value 的迭代器,用法與 keys() 類(lèi)似:

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

結(jié)果:

8、entries()

有遍歷 key 的迭代器,也有遍歷 value 的迭代器,為何不搞一個(gè)兩者一起的呢!entries()就是返回一個(gè)包含鍵值對(duì)的迭代器:

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

結(jié)果:

FormData兼容性問(wèn)題

由于 FormData 是 XMLHttpRequest Level 2 新增的接口,現(xiàn)在 低于IE10 的IE瀏覽器不支持 FormData ,至于 上面介紹的 FormData 對(duì)象的方法經(jīng)過(guò)測(cè)試,在 IE 瀏覽器中都不支持,具體的各大瀏覽器的支持情況可以參照下圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:蘇州 咸陽(yáng) 營(yíng)口 萍鄉(xiāng) 惠州 文山 甘南 紅河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5 FormData 方法介紹以及實(shí)現(xiàn)文件上傳示例》,本文關(guān)鍵詞  HTML5,FormData,方法,介紹,以及,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5 FormData 方法介紹以及實(shí)現(xiàn)文件上傳示例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于HTML5 FormData 方法介紹以及實(shí)現(xiàn)文件上傳示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美国产禁国产网站cc| 国产成人免费视频| 成人啪啪18免费游戏链接| av最新在线观看| 国产亚洲制服色| 裸体健美xxxx欧美裸体表演| 国产麻豆剧传媒精品国产av| 欧美日韩激情一区二区三区| 亚洲黄色av一区| 91香蕉视频污| 欧美三级电影在线看| 樱花草国产18久久久久| 91在线播放网址| 91国产免费观看| 一区二区三区在线观看网站| heyzo一本久久综合| 色偷偷88欧美精品久久久| 中文字幕中文字幕中文字幕亚洲无线| 成人免费av网站| 色婷婷综合久色| 一区二区三区中文在线观看| 男人女人拔萝卜视频| 欧美嫩在线观看| 五月天精品一区二区三区| 喷水视频在线观看| 欧美大片国产精品| 国产在线播精品第三| 欧美巨胸大乳hitomi| 国产欧美日韩久久| 成人性生交大片免费看中文网站| 日本乱人伦一区| 亚洲一区日韩精品中文字幕| 国产精品成人99一区无码| 欧美一级片在线看| 国精产品一区一区三区mba桃花| 亚洲天堂av中文字幕| 中文字幕欧美一| 中国特级黄色片| 日韩美一区二区三区| 国产精品一二三四五| 超碰手机在线观看| 亚洲成人综合视频| 一区二区伦理片| 国产精品国产精品国产专区不片 | 欧日韩精品视频| 亚洲综合精品久久| 日本xxx在线播放| 欧美激情一区二区三区不卡| 91视频com| 日韩一级在线观看| 国产成人精品综合在线观看| 在线观看av一区| 蜜桃视频在线观看一区| 亚洲AV成人无码精电影在线| 亚洲一区二区美女| 最新中文字幕av| 亚洲乱码一区二区三区在线观看| 少妇精品无码一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 成人激情午夜影院| 91精品在线观看入口| 国产一区二区0| 欧美视频一区二区三区在线观看| 久热成人在线视频| 91久久人澡人人添人人爽欧美| 日韩成人伦理电影在线观看| 亚洲人与黑人屁股眼交| 天堂久久久久va久久久久| 色哟哟一一国产精品| 亚洲高清免费观看高清完整版在线观看| 蜜桃久久精品成人无码av| 亚洲欧美偷拍另类a∨色屁股| 国产亚洲无码精品| 亚洲另类中文字| 中国女人特级毛片| 亚洲专区一二三| 成人免费视频入口| 午夜精品久久久久影视| 黄色片在线观看网站| 青青草国产精品亚洲专区无| 日本高清不卡视频| 国内成人精品2018免费看| 欧美欧美欧美欧美首页| 成人免费视频视频| 精品国精品国产尤物美女| 日本亚洲一区二区三区| 国产日本亚洲高清| 国产精品无码专区| 亚洲欧美国产高清| 影音先锋男人看片资源| 日本美女一区二区三区视频| 欧美午夜精品一区二区蜜桃 | 婷婷丁香综合网| 日日夜夜精品视频免费| 在线观看亚洲专区| 国产精品一二三四五| 欧美精品一区二区三区高清aⅴ | 国产iv一区二区三区| 日韩视频在线永久播放| 欧美人与性动交α欧美精品| 国产精品国产三级国产aⅴ无密码| 日本少妇高潮喷水xxxxxxx| 午夜亚洲福利老司机| 在线中文字幕一区| 高清国产午夜精品久久久久久| 欧美α欧美αv大片| 国产女人18毛片水真多18| 亚洲日本一区二区| 欧美h片在线观看| 国内精品自线一区二区三区视频| 日韩视频一区二区三区| 天天躁日日躁狠狠躁免费麻豆| 亚洲精品综合在线| 色婷婷综合五月| av在线播放不卡| 国产精品久久久久久久久晋中 | 911国产在线| 精品一区二区三区在线视频| 日韩一卡二卡三卡四卡| 男男做爰猛烈叫床爽爽小说| 亚洲成av人片在线观看| 欧美伦理电影网| 中文在线字幕观看| 亚洲国产精品麻豆| 欧美日韩国产在线观看| 亚洲区 欧美区| 亚洲国产aⅴ成人精品无吗| 欧美性大战久久久| 国产成人av免费观看| 亚洲一区二区视频在线| 欧美日韩午夜在线视频| 成人在线短视频| 亚洲一区二区精品久久av| 欧美日韩一区二区不卡| 国产大尺度视频| 天天综合色天天| 日韩欧美一二三四区| 女人又爽又黄免费女仆| 精品伊人久久久久7777人| 国产午夜久久久久| 成人在线观看高清| a亚洲天堂av| 一区二区三区美女视频| 欧美日韩高清影院| **网站欧美大片在线观看| 午夜爽爽爽男女免费观看| 成人h动漫精品一区二区| 亚洲色图19p| 欧美日韩亚洲丝袜制服| www.日本高清| 韩国v欧美v亚洲v日本v| 中文字幕在线免费不卡| 欧美午夜一区二区三区免费大片| 催眠调教后宫乱淫校园| 日本欧美一区二区三区乱码| 久久久精品黄色| 欧洲猛交xxxx乱大交3| 成年人性生活视频| 日本亚洲欧美天堂免费| 国产午夜精品在线观看| 午夜免费激情视频| 亚洲午夜精品在线观看| 全国精品久久少妇| 欧美国产欧美亚州国产日韩mv天天看完整| 丰满少妇被猛烈进入一区二区| 91麻豆精品在线观看| 天堂蜜桃91精品| 欧美国产在线观看| 在线精品观看国产| 成人性生交大免费看| 不卡的电视剧免费网站有什么| 亚洲一卡二卡三卡四卡五卡| 亚洲精品一线二线三线无人区| 黄色录像二级片| a级一a一级在线观看| 国产揄拍国内精品对白| 亚洲欧洲中文日韩久久av乱码| 91精品国产综合久久久久久久 | 亚洲一二三四区| 精品成人免费观看| 日本大香伊一区二区三区| www.17c.com喷水少妇| 国产麻豆精品久久一二三| 亚洲乱码国产乱码精品精可以看 | 女同性αv亚洲女同志| 另类综合日韩欧美亚洲| 亚洲欧美怡红院| 日韩午夜av电影| 日本韩国欧美在线| 午夜在线观看一区| 91免费在线播放| 久久国内精品视频| 亚洲激情第一区| 国产丝袜欧美中文另类| 欧美久久一二三四区| 亚洲综合图片一区| 国产激情视频网站| 成人app下载| 精品一区二区在线看| 亚洲一区二区在线免费观看视频|