日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WEB文件上传之JQuery ajaxfileupload插件使用(二)

發(fā)布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WEB文件上传之JQuery ajaxfileupload插件使用(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.JQuery ajaxfileupload插件使用準(zhǔn)備

下載地址:

http://www.phpletter.com/DOWNLOAD/

?

2.原理分析

ajaxfileupload也是利用iframe實(shí)現(xiàn)無刷新異步提交,與我的上一篇文章(WEB文件上傳之a(chǎn)pache common upload使用(一))中對iframe使用的方式有些不同。ajaxfileupload是通過監(jiān)聽iframe的onload方法來實(shí)現(xiàn), 當(dāng)從服務(wù)端處理完成后,就觸發(fā)iframe的onload事件調(diào)用其綁定的方法,在綁定的方法中獲取iframe中服務(wù)器返回的數(shù)據(jù)體(支持的普通文本,json,xml,script, html)

?

3.具體使用

jsp頁面

Html代碼?

?

  • <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">??
  • <html>??
  • <head>??
  • ????<title>JQuery?ajaxfileupload文件上傳</title>??
  • ????<meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8">??
  • ????<link?type="text/css"?rel="stylesheet"?href="css/ajaxfileupload.css"?>??
  • ????<script?type="text/javascript"?src="js/jquery/jquery-1.9.1.js"></script>??
  • ????<script?type="text/javascript"?src="js/jquery/ajaxfileupload.js"></script>??
  • ??????
  • ????<script?type="text/javascript">??
  • ??
  • ????//定時器對象??
  • ????var?uploadProcessTimer?=?null;??
  • ??
  • ????//獲取文件上傳進(jìn)度??
  • ????function?getFileUploadProcess()?{??
  • ????????$.get('/upload/getFileProcessServlet',?function(data)?{??
  • ????????????$('#fileUploadProcess').html(data);??
  • ????????});??
  • ????}??
  • ??
  • ????function?ajaxFileUpload()??
  • ????{??
  • ????????//設(shè)置加載圖標(biāo)的顯示??
  • ????????$('#loading').show();??
  • ????????uploadProcessTimer?=?window.setInterval(getFileUploadProcess,?20);??
  • ??
  • ????????$.ajaxFileUpload??
  • ????????({??
  • ????????????url:'/upload/ajaxUploadServlet',??
  • ????????????secureuri:false,??
  • ????????????fileElementId:'fileToUpload',??
  • ????????????dataType:?'json',??
  • ????????????data:{name:?$('#name').val()},??
  • ????????????success:?function?(data,?status)??
  • ????????????{??
  • ????????????????//清除定時器??
  • ????????????????if(uploadProcessTimer)?{??
  • ????????????????????window.clearInterval(uploadProcessTimer);??
  • ????????????????}??
  • ????????????????$('#loading').hide();??
  • ????????????????var?message?=?data['message'];??
  • ????????????????var?code?=?data['code'];??
  • ????????????????if(code?!=?200)?{??
  • ????????????????????$('#fileUploadProcess').html('0%');??
  • ????????????????}??
  • ????????????????if(message)??
  • ????????????????{??
  • ????????????????????alert(data.message);??
  • ????????????????}??
  • ????????????},??
  • ????????????error:?function?(data,?status,?e)??
  • ????????????{??
  • ????????????????//清除定時器??
  • ????????????????if(uploadProcessTimer)?{??
  • ????????????????????window.clearInterval(uploadProcessTimer);??
  • ????????????????}??
  • ????????????????$('#loading').hide();??
  • ????????????????//這里處理的是網(wǎng)絡(luò)異常,返回參數(shù)解析異常,DOM操作異常??
  • ????????????????alert("上傳發(fā)生異常");??
  • ????????????}??
  • ????????})??
  • ??
  • ????????return?false;??
  • ????}??
  • ????</script>??
  • </head>??
  • <body>??
  • <h2>JQuery?ajaxfileupload文件上傳</h2>??
  • <img?id="loading"?src="images/loading.gif"?style="display:none;">??
  • 用戶信息:??<br/>??
  • ????姓名:<input?id="name"?name="name"?type="text">?<br/>??
  • ????附件:<input?id="fileToUpload",?name="file1"?type="file"?class="input">?<br/>??
  • ????<br><br>??
  • ????<input?type="button"?οnclick="return?ajaxFileUpload();"?value="上傳"><br/>??
  • 上傳進(jìn)度:<label?id="fileUploadProcess"></label>??
  • </body>??
  • </html>??
  • ?

    服務(wù)端處理修改

    由原來的返回script改為純JSON數(shù)據(jù)格式的返回

    AjaxUploadFileServlet.java關(guān)鍵變動

    Java代碼?

    ?

  • /**?
  • ?*?返回結(jié)果函數(shù)?
  • ?*?@param?response?
  • ?*?@param?state?
  • ?*/??
  • private?void?responseMessage(HttpServletResponse?response,?State?state)?{??
  • ????response.setCharacterEncoding(encode);??
  • ????response.setContentType("text/html;?charset="?+?encode);??
  • ????Writer?writer?=?null;??
  • ????try?{??
  • ????????writer?=?response.getWriter();??
  • ????????writer.write("{\"code\":"?+?state.getCode()?+",\"message\":\""?+?state.getMessage()+?"\"}");??
  • ????????writer.flush();??
  • ????????writer.close();??
  • ????}?catch(Exception?e)?{??
  • ????????logger.error(e.getMessage(),?e);??
  • ????}?finally?{??
  • ????????IOUtils.closeQuietly(writer);??
  • ????}??
  • }??
  • ?

    4.總結(jié)

    ajaxfileupload插件簡化了文件上傳的過程,頁面上無需定義from表單,提交時自動完成臨時form表單創(chuàng)建target為臨時創(chuàng)建的iframe, 并將file控件復(fù)制一份到表單內(nèi)進(jìn)行提交,完成提交后自動銷毀臨時生成的form表單和iframe。

    缺點(diǎn):不支持多個file控件,不過這種解決方案也不適合進(jìn)行多文件的提交,所以無傷大雅。

    總結(jié)

    以上是生活随笔為你收集整理的WEB文件上传之JQuery ajaxfileupload插件使用(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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