日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

jq ajax异步上传文件,jQuery插件ajaxFileUpload异步上传文件

發(fā)布時(shí)間:2024/9/27 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jq ajax异步上传文件,jQuery插件ajaxFileUpload异步上传文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

AjaxFileUpload.js并不是一個(gè)很出名的插件,只是別人寫(xiě)好的放出來(lái)供大家用,原理都是創(chuàng)建隱藏的表單和iframe然后用JS去提交,獲得返回值。

當(dāng)初做了個(gè)異步上傳的功能,選擇它因?yàn)樗呐渲梅绞奖容^像jQuery的AJAX,我很喜歡。

評(píng)論里面說(shuō)到的不行。那是因?yàn)槲覀冇玫牟皇峭粋€(gè)js。我上github搜AjaxFileUpload出來(lái)很多類(lèi)似js。

ajaxFileUpload是一個(gè)異步上傳文件的jQuery插件

傳一個(gè)不知道什么版本的上來(lái),以后不用到處找了。

語(yǔ)法:$.ajaxFileUpload([options])

options參數(shù)說(shuō)明:

1、url          ? 上傳處理程序地址。

2,fileElementId     ? 需要上傳的文件域的ID,即的ID。

3,secureuri        是否啟用安全提交,默認(rèn)為false。

4,dataType        服務(wù)器返回的數(shù)據(jù)類(lèi)型。可以為xml,script,json,html。如果不填寫(xiě),jQuery會(huì)自動(dòng)判斷。

5,success        提交成功后自動(dòng)執(zhí)行的處理函數(shù),參數(shù)data就是服務(wù)器返回的數(shù)據(jù)。

6,error          提交失敗自動(dòng)執(zhí)行的處理函數(shù)。

7,data           自定義參數(shù)。這個(gè)東西比較有用,當(dāng)有數(shù)據(jù)是與上傳的圖片相關(guān)的時(shí)候,這個(gè)東西就要用到了。

8, type          ? 當(dāng)要提交自定義參數(shù)時(shí),這個(gè)參數(shù)要設(shè)置成post

錯(cuò)誤提示:

1、SyntaxError: missing ; before statement錯(cuò)誤

如果出現(xiàn)這個(gè)錯(cuò)誤就需要檢查url路徑是否可以訪問(wèn)

2、SyntaxError: syntax error錯(cuò)誤

如果出現(xiàn)這個(gè)錯(cuò)誤就需要檢查處理提交操作的服務(wù)器后臺(tái)處理程序是否存在語(yǔ)法錯(cuò)誤

3、SyntaxError: invalid property id錯(cuò)誤

如果出現(xiàn)這個(gè)錯(cuò)誤就需要檢查文本域?qū)傩訧D是否存在

4、SyntaxError: missing } in XML expression錯(cuò)誤

如果出現(xiàn)這個(gè)錯(cuò)誤就需要檢查文件name是否一致或不存在

5、其它自定義錯(cuò)誤

大家可使用變量$error直接打印的方法檢查各參數(shù)是否正確,比起上面這些無(wú)效的錯(cuò)誤提示還是方便很多。

使用方法:

第一步:先引入jQuery與ajaxFileUpload插件。注意先后順序,這個(gè)不用說(shuō)了,所有的插件都是這樣。

第二步:HTML代碼:

第三步:JS代碼

$(function () {

$(":button").click(function () {

ajaxFileUpload();

})

})

function ajaxFileUpload() {

$.ajaxFileUpload

(

{

url: '/upload.aspx', //用于文件上傳的服務(wù)器端請(qǐng)求地址

secureuri: false, //是否需要安全協(xié)議,一般設(shè)置為false

fileElementId: 'file1', //文件上傳域的ID

dataType: 'json', //返回值類(lèi)型 一般設(shè)置為json

success: function (data, status) //服務(wù)器成功響應(yīng)處理函數(shù)

{

$("#img1").attr("src", data.imgurl);

if (typeof (data.error) != 'undefined') {

if (data.error != '') {

alert(data.error);

} else {

alert(data.msg);

}

}

},

error: function (data, status, e)//服務(wù)器響應(yīng)失敗處理函數(shù)

{

alert(e);

}

}

)

return false;

}

第二個(gè)例子

使用ajaxFileUpload上傳文件時(shí),有時(shí)需要帶參數(shù)提交,網(wǎng)上有很多資料說(shuō)使用data,但其實(shí)要使用data帶參數(shù)是需要修改的,否則后臺(tái)是獲取不到的.

分析原因:

ajaxFileUpload為了實(shí)現(xiàn)無(wú)刷新異步提交文件,構(gòu)建 iframe 然后創(chuàng)建form表單 再將要上傳的文件寫(xiě)上去再提交.但是原代碼 卻沒(méi)有處理data.所以這塊內(nèi)容需要我們自己加上去.

下面紅色部分為修改ajaxFileUpload.js的三處地方:

備注:好像csdn代碼中加顏色加粗? 有問(wèn)題這三處修改的地方我直接貼出來(lái),位置看下面的代碼,

①createUploadForm: function(id, fileElementId,data);

②if (data) {

for (var i in data) {

$('').appendTo(form);

}

}

③var form = jQuery.createUploadForm(id, s.fileElementId,s.data);

ajaxFileUpload為了實(shí)現(xiàn)無(wú)刷新異步提交文件,構(gòu)建 iframe 然后創(chuàng)建form表單 再將要上傳的文件寫(xiě)上去再提交.但是原代碼 卻沒(méi)有處理data.所以這塊內(nèi)容需要我們自己加上去.

下面紅色部分為修改ajaxFileUpload.js的三處地方:

備注:好像csdn代碼中加顏色加粗? 有問(wèn)題這三處修改的地方我直接貼出來(lái),位置看下面的代碼,

createUploadForm: function(id, fileElementId,data);

if (data) {

for (var i in data) {

$('').appendTo(form);

}

}

var form = jQuery.createUploadForm(id, s.fileElementId,s.data);

如何使用它呢?

$.ajaxFileUpload({

url: 'http://localhost:8080/HNUST/crawler/ordinary2',

type: 'post',

data : {

url : url,

keyword : keyword,

rule : rule,

data : data,

sign:sign

},

secureuri: false, //一般設(shè)置為false

fileElementId: 'file', // 上傳文件的id、name屬性名

dataType: 'JSON', //返回值類(lèi)型,一般設(shè)置為json、application/json 這里要用大寫(xiě) 不然會(huì)取不到返回的數(shù)據(jù)

success: function(data, status){

alert(data);

},

error: function(data, status, e){

alert(e);

}

});

html:

java:java后臺(tái) 獲取參數(shù)還是正常獲取:

String url=request.getParameter("url");

String keyword=request.getParameter("keyword");

獲取文件并分行讀取(非圖片):

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

MultipartFile multipartFile = multipartRequest.getFile("file"); //這個(gè)file要與fileElementId一致

try {

InputStream inputStream=multipartFile.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

String tempString = null;

// 一次讀入一行,直到讀入null為文件結(jié)束

while ((tempString = reader.readLine()) != null) {

fileList.add(tempString);

}

} catch (IOException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

使用過(guò)程中有兩點(diǎn)需要注意的地方:

其一,dataType必須要大寫(xiě);

其二,在data的值要寫(xiě)成json的格式,否則后臺(tái)無(wú)法接受參數(shù)

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

總結(jié)

以上是生活随笔為你收集整理的jq ajax异步上传文件,jQuery插件ajaxFileUpload异步上传文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。