国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 肥西县| 黑河市| 彰武县| 夏河县| 米泉市| 略阳县| 灵台县| 治县。| 邮箱| 安图县| 德格县| 宾川县| 东台市| 长垣县| 六安市| 淮南市| 固安县| 马公市| 西乡县| 仁寿县| 宝清县| 井陉县| 旺苍县| 稻城县| 渭源县| 玉山县| 特克斯县| 焦作市| 安乡县| 洛川县| 兴安盟| 金溪县| 崇阳县| 巴东县| 常山县| 德庆县| 新疆| 赣榆县| 迁安市| 乌兰察布市| 临猗县|