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

1.JQuery ajaxfileupload插件使用準備

下載地址:

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

?

2.原理分析

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

?

3.具體使用

jsp頁面

Html代碼?

?收藏代碼

  1. <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">??
  2. <html>??
  3. <head>??
  4. ????<title>JQuery?ajaxfileupload文件上傳</title>??
  5. ????<meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8">??
  6. ????<link?type="text/css"?rel="stylesheet"?href="css/ajaxfileupload.css"?>??
  7. ????<script?type="text/javascript"?src="js/jquery/jquery-1.9.1.js"></script>??
  8. ????<script?type="text/javascript"?src="js/jquery/ajaxfileupload.js"></script>??
  9. ??????
  10. ????<script?type="text/javascript">??
  11. ??
  12. ????//定時器對象??
  13. ????var?uploadProcessTimer?=?null;??
  14. ??
  15. ????//獲取文件上傳進度??
  16. ????function?getFileUploadProcess()?{??
  17. ????????$.get('/upload/getFileProcessServlet',?function(data)?{??
  18. ????????????$('#fileUploadProcess').html(data);??
  19. ????????});??
  20. ????}??
  21. ??
  22. ????function?ajaxFileUpload()??
  23. ????{??
  24. ????????//設置加載圖標的顯示??
  25. ????????$('#loading').show();??
  26. ????????uploadProcessTimer?=?window.setInterval(getFileUploadProcess,?20);??
  27. ??
  28. ????????$.ajaxFileUpload??
  29. ????????({??
  30. ????????????url:'/upload/ajaxUploadServlet',??
  31. ????????????secureuri:false,??
  32. ????????????fileElementId:'fileToUpload',??
  33. ????????????dataType:?'json',??
  34. ????????????data:{name:?$('#name').val()},??
  35. ????????????success:?function?(data,?status)??
  36. ????????????{??
  37. ????????????????//清除定時器??
  38. ????????????????if(uploadProcessTimer)?{??
  39. ????????????????????window.clearInterval(uploadProcessTimer);??
  40. ????????????????}??
  41. ????????????????$('#loading').hide();??
  42. ????????????????var?message?=?data['message'];??
  43. ????????????????var?code?=?data['code'];??
  44. ????????????????if(code?!=?200)?{??
  45. ????????????????????$('#fileUploadProcess').html('0%');??
  46. ????????????????}??
  47. ????????????????if(message)??
  48. ????????????????{??
  49. ????????????????????alert(data.message);??
  50. ????????????????}??
  51. ????????????},??
  52. ????????????error:?function?(data,?status,?e)??
  53. ????????????{??
  54. ????????????????//清除定時器??
  55. ????????????????if(uploadProcessTimer)?{??
  56. ????????????????????window.clearInterval(uploadProcessTimer);??
  57. ????????????????}??
  58. ????????????????$('#loading').hide();??
  59. ????????????????//這里處理的是網絡異常,返回參數解析異常,DOM操作異常??
  60. ????????????????alert("上傳發生異常");??
  61. ????????????}??
  62. ????????})??
  63. ??
  64. ????????return?false;??
  65. ????}??
  66. ????</script>??
  67. </head>??
  68. <body>??
  69. <h2>JQuery?ajaxfileupload文件上傳</h2>??
  70. <img?id="loading"?src="images/loading.gif"?style="display:none;">??
  71. 用戶信息:??<br/>??
  72. ????姓名:<input?id="name"?name="name"?type="text">?<br/>??
  73. ????附件:<input?id="fileToUpload",?name="file1"?type="file"?class="input">?<br/>??
  74. ????<br><br>??
  75. ????<input?type="button"?οnclick="return?ajaxFileUpload();"?value="上傳"><br/>??
  76. 上傳進度:<label?id="fileUploadProcess"></label>??
  77. </body>??
  78. </html>??

?

服務端處理修改

由原來的返回script改為純JSON數據格式的返回

AjaxUploadFileServlet.java關鍵變動

Java代碼?

?收藏代碼

  1. /**?
  2. ?*?返回結果函數?
  3. ?*?@param?response?
  4. ?*?@param?state?
  5. ?*/??
  6. private?void?responseMessage(HttpServletResponse?response,?State?state)?{??
  7. ????response.setCharacterEncoding(encode);??
  8. ????response.setContentType("text/html;?charset="?+?encode);??
  9. ????Writer?writer?=?null;??
  10. ????try?{??
  11. ????????writer?=?response.getWriter();??
  12. ????????writer.write("{\"code\":"?+?state.getCode()?+",\"message\":\""?+?state.getMessage()+?"\"}");??
  13. ????????writer.flush();??
  14. ????????writer.close();??
  15. ????}?catch(Exception?e)?{??
  16. ????????logger.error(e.getMessage(),?e);??
  17. ????}?finally?{??
  18. ????????IOUtils.closeQuietly(writer);??
  19. ????}??
  20. }??

?

4.總結

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

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248826.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248826.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248826.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Navicat安裝激活

有條件的同學麻煩不要使用下面的激活步驟&#xff0c;僅供個人學習使用 。。。。。。 。。。。。。 。。。。。。 。。。。。。 一、去官網下載最新Navicat軟件https://www.navicat.com.cn/download/navicat-premium 二、去下載激活腳本https://github.com/DoubleLabyrinth/nav…

WEB文件上傳之apache common upload使用(一)

文件上傳一個經常用到的功能&#xff0c;它有許多中實現的方案。 頁面表單 RFC1897規范 http協議上傳 頁面控件(flash/html5/activeX/applet) RFC1897規范 http協議上傳 頁面控件(flash/html5/activeX/applet) 自定義數據規范 http協議上傳 頁面控件(flash/html5/act…

前端CSS學習筆記

一 CSS介紹 層疊樣式表(英文全稱&#xff1a;Cascading Style Sheets)是一種用來表現HTML&#xff08;超文本標記語言&#xff09;或XML&#xff08;標準通用標記語言的一個子集&#xff09;等文件樣式的計算機語言。CSS不僅可以靜態地修飾網頁&#xff0c;還可以配合各種腳本語…

自律以自救

在一次邏輯思維的跨年晚會上&#xff0c;羅胖曾以「帝王」來形容活在當下移動互聯網世界的人們。一個手機 App 可以讓你足不出戶&#xff0c;享受上百名廚師團隊的服務&#xff0c;中飯想吃啥菜式、樣品&#xff0c;輸入框中一應俱全&#xff0c;光論規格&#xff0c;可能已超過…

Validform使用入門

Validform使用入門 1、引入css 請查看下載文件中的style.css&#xff0c;把里面Validform必須部分復制到你的css中&#xff08;文件里這個注釋 "/*以下部分是Validform必須的*/" 之后的部分是必須的&#xff09;。之前發現有部分網友把整個style.css都引用在了頁面…

Java爬取并下載酷狗音樂

本文方法及代碼僅供學習&#xff0c;僅供學習。 案例&#xff1a; 下載酷狗TOP500歌曲&#xff0c;代碼用到的代碼庫包含&#xff1a;Jsoup、HttpClient、fastJson等。 正文&#xff1a; 1、分析是否可以獲取到TOP500歌單 打開酷狗首頁&#xff0c;查看TOP500&#xff0c;發現存…

C 表達式及返回值

以下程序的輸出結果是__A____。 #include<stdio.h> main() {int i10,j10;printf("%d,%d\n",i,j--); } A、11,10 B、9,10 C、010,9 D、10,9 8.若變量a、i已正確定義&#xff0c;且i已正確賦值&#xff0c;合法的語句是___B___。 A、a1 B、i; C、…

Webpack/Vue-cli兩種方式加載markdown文件并實現代碼高亮

準備的資源&#xff1a; highlight.js &#xff1a; 實現代碼高亮&#xff0c;通過npm install highlight.js -D安裝 vue-markdown-loader&#xff1a;解析md文件的必備loader&#xff0c;通過npm install vue-markdown-loader -D安裝 下面我們分兩個場景來說明一下md文件的…

新浪微博第三方登陸重定向錯誤23123

新浪微博第三方登陸重定向錯誤23123 2019年06月02日 13:49:43 溫室花朵 閱讀數&#xff1a;2更多 個人分類&#xff1a; 第三方微博登陸21323編輯當我們使用微博第三方登陸的時候&#xff0c;發現登陸出錯了&#xff0c;錯誤碼為&#xff1a;21323&#xff0c;解決方案如下&…

Utility Manager 的一些百度不了的操作

一進來是不是這樣的&#xff01; 那突然出了點問題&#xff0c;咋辦呢&#xff01; 就像這樣子的&#xff0c; 恢復默認布局就OK啦&#xff01;哈哈哈&#xff0c;太聰明啦&#xff0c;但是百度了好長時間還是找不到啊&#xff0c;怎么辦吶&#xff0c;煩死啦&#xff01; 其實…

Echart 5.0+版本報錯Error in data(): “TypeError: Cannot read properties of undefined (reading ‘graphic‘)“

首先第一步需要檢查echarts的導入方式&#xff0c;在5.0以后的版本&#xff0c;echarts做了比較大的調整&#xff0c;在vue中引入時必須使用如下命令 // import echarts from echarts 這種方式高版本不支持import * as echarts from echartsvue.prototype.$echarts echarts其次…

記錄一次內網滲透試驗

0x00 前言 目標&#xff1a;給了一個目標機ip&#xff0c;要求得到該服務器權限&#xff0c;并通過該ip滲透至內網控制內網的兩臺服務器 攻擊機&#xff1a;kali (192.168.31.51) 目標機&#xff1a;windows 2003 (192.168.31.196) 0x01 信息收集 nmap端口探測 御劍后臺掃描 …

2018-2019 1 20165203 實驗五 通用協議設計

2018-2019 1 20165203 實驗五 通用協議設計 OpenSSL學習 定義&#xff1a;OpenSSL是為網絡通信提供安全及數據完整性的一種安全協議&#xff0c;囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協議&#xff0c;并提供了豐富的應用程序供測試或其它目的使用。基本功…

弄懂webpack,只要看這一片就夠了(文末有福利)

什么是webpack ? webpack是什么&#xff0c;官網中是這么說的。 ? 本質上&#xff0c;webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)。當 webpack 處理應用程序時&#xff0c;它會遞歸地構建一個依賴關系圖(dependency graph)&#xff0c;其中包…

beta沖刺總結那周余嘉熊掌將得隊

作業格式 課程名稱&#xff1a;軟件工程1916|W&#xff08;福州大學&#xff09;作業要求&#xff1a;項目Beta沖刺團隊名稱&#xff1a; 那周余嘉熊掌將得隊作業目標&#xff1a;beta沖刺總結隊員學號隊員姓名博客地址備注221600131Jaminhttps://www.cnblogs.com/JaminWu/隊長…

在Winform中菜單動態添加“最近使用文件”

最近在做文件處理系統中&#xff0c;要把最近打開文件顯示出來&#xff0c;方便用戶使用。網上資料有說&#xff0c;去遍歷“C:\Documents and Settings\Administrator\Recent”下的最近文檔本。文主要介紹在Winform界面菜單中實現【最近使用的文件】動態菜單的處理&#xff0c…

Vue組件通信原理剖析(一)事件總線的基石 $on和$emit

首先我們先從一個面試題入手。 面試官問&#xff1a; “Vue中組件通信的常用方式有哪些&#xff1f;” 我答&#xff1a; 1. props 2. 自定義事件 3. eventbus 4. vuex 5. 還有常見的邊界情況$parent、$children、$root、$refs、provide/inject 6. 此外還有一些非props特性$att…

display:flex彈性布局

一、背景 前段時間幫公司運維小姑娘調整她自己寫的頁面樣式時發現她用了display: flex&#xff0c;我這個后端老古董還不太懂flex&#xff0c;自愧不如啊&#xff0c;所以寫篇博客記錄學習下。 現在寫的前端頁面還停留在依賴 display 屬性 position屬性 float屬性的布局方式&…

一些好的思維方式

定理s 一、墨菲定律 觀點&#xff1a;1.任何事都沒有表面看起來那么簡單&#xff1b;2.所有的事都會比你預計的時間長&#xff1b;3.會出錯的事總會出錯&#xff1b;4.如果你擔心某種情況發生&#xff0c;那么它就更有可能發生。 墨菲定律的核心觀點就4點&#xff0c;不算復雜&…

Vue組件通信原理剖析(二)全局狀態管理Vuex

首先我們先從一個面試題入手。 面試官問&#xff1a; “Vue中組件通信的常用方式有哪些&#xff1f;” 我答&#xff1a; 1. props 2. 自定義事件 3. eventbus 4. vuex 5. 還有常見的邊界情況$parent、$children、$root、$refs、provide/inject 6. 此外還有一些非props特性$att…