国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > AJAX > 正文

通過(guò)Ajax方式上傳文件使用FormData進(jìn)行Ajax請(qǐng)求

2024-09-01 08:27:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

通過(guò)傳統(tǒng)的form表單提交的方式上傳文件:

Html代碼 

<form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data">    <h1 >測(cè)試通過(guò)Rest接口上傳文件 </h1>    <p >指定文件名: <input type ="text" name="filename" /></p>    <p >上傳文件: <input type ="file" name="file" /></p>    <p >關(guān)鍵字1: <input type ="text" name="keyword" /></p>    <p >關(guān)鍵字2: <input type ="text" name="keyword" /></p>    <p >關(guān)鍵字3: <input type ="text" name="keyword" /></p>    <input type ="submit" value="上傳"/> </form> 

不過(guò)傳統(tǒng)的form表單提交會(huì)導(dǎo)致頁(yè)面刷新,但是在有些情況下,我們不希望頁(yè)面被刷新,這種時(shí)候我們都是使用Ajax的方式進(jìn)行請(qǐng)求的:

Js代碼 

$.ajax({    url : "http://localhost:8080/STS/rest/user",    type : "POST",    data : $( '#postForm').serialize(),    success : function(data) {      $( '#serverResponse').html(data);    },    error : function(data) {      $( '#serverResponse').html(data.status + " : " + data.statusText + " : " + data.responseText);    } }); 

如上,通過(guò)$('#postForm').serialize()可以對(duì)form表單進(jìn)行序列化,從而將form表單中的所有參數(shù)傳遞到服務(wù)端。

但是上述方式,只能傳遞一般的參數(shù),上傳文件的文件流是無(wú)法被序列化并傳遞的。
不過(guò)如今主流瀏覽器都開(kāi)始支持一個(gè)叫做FormData的對(duì)象,有了這個(gè)FormData,我們就可以輕松地使用Ajax方式進(jìn)行文件上傳了。

關(guān)于FormData及其用法

FormData是什么呢?我們來(lái)看看Mozilla上的介紹。

XMLHttpRequest Level 2添加了一個(gè)新的接口FormData.利用FormData對(duì)象,我們可以通過(guò)JavaScript用一些鍵值對(duì)來(lái)模擬一系列表單控件,我們還可以使用XMLHttpRequest的send()方法來(lái)異步的提交這個(gè)"表單".比起普通的ajax,使用FormData的最大優(yōu)點(diǎn)就是我們可以異步上傳一個(gè)二進(jìn)制文件. 

所有主流瀏覽器的較新版本都已經(jīng)支持這個(gè)對(duì)象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。

參見(jiàn):https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/FormData

這里只展示一個(gè)通過(guò)from表單來(lái)初始化FormData的方式

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

Js代碼 

var oData = new FormData(document.forms.namedItem("fileinfo" )); oData.append( "CustomField", "This is some extra data" ); var oReq = new XMLHttpRequest(); oReq.open( "POST", "stash.php" , true ); oReq.onload = function(oEvent) {    if (oReq.status == 200) {      oOutput.innerHTML = "Uploaded!" ;    } else {      oOutput.innerHTML = "Error " + oReq.status + " occurred uploading your file.<br //>";    } }; oReq.send(oData);             
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 湖北省| 南投市| 奇台县| 永仁县| 绍兴县| 巍山| 北流市| 那坡县| 郎溪县| 陈巴尔虎旗| 大竹县| 张家界市| 溧阳市| 永宁县| 库伦旗| 许昌市| 普格县| 达孜县| 当雄县| 榆林市| 祁连县| 福海县| 光山县| 麻栗坡县| 威海市| 莲花县| 高淳县| 区。| 新巴尔虎左旗| 伊春市| 津市市| 英吉沙县| 夏邑县| 托克逊县| 昌宁县| 波密县| 沁源县| 宜良县| 庐江县| 夏津县| 广州市|