在struts2應用中使用ueditor富文本編輯器上傳圖片或者附件時,即便配置好了上傳路徑信息,也會出現"未找到上傳文件"的錯誤提示,出先該問題的緣由是:在配置struts過濾器,過濾路徑設置/*方式時,因爲struts2框架默認使用apache的Commons FileUpload組件和內建的FileUploadInterceptor攔截器實現上傳,會將request文件域封裝到action中一個File類型的屬性中,並刪除request中的文件域,所以會上傳文件失敗。 html
在這裏先說下ueditor1.3.6 jsp版文件上傳的相關配置。 java
Ueditor的目錄結構 apache
首頁咱們要在ueditor.config.js文件中配置ueditor的基本相對路徑 app
接下來看看圖片上傳的配置 框架
咱們能夠看出圖片上傳是經過ueditor根目錄下jsp目錄下的imageUp.jap完成的。savePath爲文件保存目錄列表 jsp
會在下圖中用到 編輯器
對應的會在jsp目錄下建立upload目錄用於保存上傳的圖片 ide
最後咱們打開imageUp.jsp頁面,會看到該頁面用到Uploader.java類,因此咱們須要類路徑下建立一個ueditor包並將Uploader.java類拷貝進去 url
完成以上配置,當咱們上傳文件時,就會出現「未找到上傳文件」的提示。 spa
解決方案:
1.更改struts配置/*爲*.xx的方式。(因爲項目緣由,該方式本人未親試,如有讀者實驗過,請留言告知,謝謝)
2.本身寫一個action代替原有的imageUp.jsp頁面(貌似該方案比較麻煩)
3.本身定義一個struts過濾器,指定不對ueditor/jsp/目錄下的jsp頁面進行過濾。(該方案相對上一種就比較簡單)
過濾器代碼以下:
package com.jl.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter; public class MyStrutsFilter extends StrutsPrepareAndExecuteFilter{ @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String url = request.getRequestURI(); System.out.println(url); if (url.contains("/meeting/ueditor/jsp/")) { System.out.println("使用自定義過濾器"); chain.doFilter(req, res); }else{ System.out.println("使用默認過濾器"); super.doFilter(req, res, chain); } } }
<!-- 配置struts過濾器 --> <filter> <filter-name>struts2</filter-name> <filter-class>com.jl.filter.MyStrutsFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
最後,但願你們轉載請註明出處,尊重別人的勞動成果http://my.oschina.net/jiangli0502/blog/210263
參考資料:http://www.010cnc.net/subject/about/UEditor%20與Struts2%20結合下傳有關問題解決.html