中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WebWork中怎么實現文件上傳功能

發布時間:2021-08-06 15:25:51 來源:億速云 閱讀:157 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關WebWork中怎么實現文件上傳功能,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Webwork文件上傳看了很多的文章收獲不少,目前比較簡單的方式是通過webwork提供的FileUploadInterceptor來實現Webwork文件上傳,這個攔截器在使用的時候是非常方便的,通過這個攔截器可以自動獲得上傳文件的文件名、文件類型、文件三個部分。然后用戶可以再進行后續的處理,包括將文件信息存入數據庫、移動文件到制定的文件夾等。

對于這個攔截器的工作原理大致是這樣的,用戶執行Action的時候,攔截器構造request:

java 代碼

HttpServletRequest request = (HttpServletRequest)   ac.get(ServletActionContext.HTTP_REQUEST);

然后判斷request是否是MultiPartRequestWrapper的一個實例,接下來初始化MultiPartRequestWrapper:

java 代碼

MultiPartRequestWrapper multiWrapper =   (MultiPartRequestWrapper) request;

這里就通過判斷用戶在webwork.properties中定義Webwork文件上傳類型來構造MultiPartRequestWrapper,

java 代碼

String parser = Configuration.getString  (WebWorkConstants.WEBWORK_MULTIPART_PARSER);      // If it's not set, use Jakarta      if (parser.equals("")) {      log.warn("Property webwork.multipart.parser not set." +      " Using com.opensymphony.webwork.dispatcher.  multipart.JakartaMultiPartRequest");      parser = "com.opensymphony.webwork.dispatcher.  multipart.JakartaMultiPartRequest";      }      // legacy support for old style property values      else if (parser.equals("pell")) {      parser = "com.opensymphony.webwork.dispatcher.  multipart.PellMultiPartRequest";      } else if (parser.equals("cos")) {      parser = "com.opensymphony.webwork.dispatcher.  multipart.CosMultiPartRequest";      } else if (parser.equals("jakarta")) {      parser = "com.opensymphony.webwork.dispatcher.  multipart.JakartaMultiPartRequest";      }

假設用戶定義了jakarta,這時候就通過JakartaMultiPartRequestMonitor來實現Webwork文件上傳(通過common-fileupload),同時獲得文件的名稱和類型等信息。

對于文件上傳進度條,網上提供了一種給予servlet的解決辦法,這種方式可以很方便的使用在Struts模式下的mvc架構的程序中,其中用到的類包可以在http://www.telio.be/blog/wp-content/uploads/2006/01/上找到,這種方式的實質是用到了dwr的回調方式。servlet的上傳方式是通過下面的方式實現的:

java 代碼

ServletFileUpload upload =   new ServletFileUpload(factory);      upload.parseRequest(servletRequest);

而進度條是通過實現一個factory,來實現上傳狀態的回調。

webwork的攔截器實際已經將上傳文件到臨時目錄封裝在內部的類中,這樣我們就無法構造factory來實現進度條的監控,給予以上的考慮,想了一個比較笨的辦法,將MultiPartRequestWrapper修改一下,增加一個新的屬性定義:

java 代碼

else if (parser.equals("monitor"))   {      parser = "com.opensymphony.webwork.  dispatcher.multipart.JakartaMultiPartRequestMonitor";     }

這樣用戶可以在webwork.properties中設置上傳的模式為monitor,然后自己實現一個JakartaMultiPartRequestMonitor,在這個class中,將原有的factory實現方法通過帶進度條的方式來實現,這樣就能監控到servlet上傳的進度。基本的實現思路就是這樣的。下面將幾個配置過程整理一下:

1、將修改的兩個類添加到webwork2.2.x。jar中:MultiPartRequestWrapper。class和JakartaMultiPartRequestMonitor.class

2、修改webwork.webwork.properties:webwork.multipart.parser=monitor

3、將剛才下載的be.telio.mediastore.ui.upload的代碼加入

4、修改dwr.xml文件,添加下面的代碼:

xml 代碼

<create creator="new" javascript="UploadMonitor">     <PARAM < SPAN>name="class" value="  be.telio.mediastore.ui.upload.UploadMonitor"/>     create>     <convert converter="bean" match="  be.telio.mediastore.ui.upload.UploadInfo"/>

5、將下載的包中的resource文件夾拷貝到web目錄下

6、建立一個文件上傳action

7、建立Webwork文件上傳頁面,添加幾個js,同時在form中添加startProgress():

<script src='/ugc/resources/js/upload.js'> </script>  <script src='/ugc/dwr/interface/UploadMonitor.js'>   </script>  <script src='/ugc/dwr/engine.js'>   </script>  <script src='/ugc/dwr/util.js'>   </script>   <ww:form action="doUpload" method="POST" enctype="  multipart/form-data" onsubmit="startProgress()">

上述就是小編為大家分享的WebWork中怎么實現文件上傳功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚松县| 体育| 永年县| 湟源县| 肥东县| 克拉玛依市| 金溪县| 抚州市| 伊川县| 蚌埠市| 华安县| 中阳县| 桐柏县| 锦屏县| 连云港市| 梁平县| 北宁市| 蒙阴县| 太谷县| 广饶县| 四会市| 遂宁市| 江孜县| 广宗县| 黎城县| 莎车县| 弥渡县| 延边| 南部县| 汨罗市| 连州市| 章丘市| 浮梁县| 长子县| 武山县| 阳朔县| 溧阳市| 峨边| 沅江市| 合水县| 浙江省|