標籤:
摘要: ueditor1.3.6jsp版在struts2應用中上傳圖片報"未找到上傳檔案"解決方案
在struts2應用中使用ueditor富文字編輯器上傳圖片或者附件時,即使配置好了上傳路徑資訊,也會出現"未找到上傳檔案"的錯誤提示,出先該問題的原因是:在配置struts過濾器,過濾路徑設定/*方式時,由於struts2架構預設使用apache的Commons FileUpload組件和內建的FileUploadInterceptor攔截器實現上傳,會將request檔案域封裝到action中一個File類型的屬性中,並刪除request中的檔案域,因此會上傳檔案失敗。
在這裡先說下ueditor1.3.6 jsp版檔案上傳的相關配置。
Ueditor的目錄結構
首頁我們要在ueditor.config.js檔案中配置ueditor的基本相對路徑
接下來看看圖片上傳的配置
我們可以看出圖片上傳是通過ueditor根目錄下jsp目錄下的imageUp.jap完成的。savePath為檔案儲存目錄列表
會在中用到
對應的會在jsp目錄下建立upload目錄用於儲存上傳的圖片
最後我們開啟imageUp.jsp頁面,會看到該頁面用到Uploader.java類,所以我們需要類路徑下建立一個ueditor包並將Uploader.java類拷貝進去
完成以上配置,當我們上傳檔案時,就會出現“未找到上傳檔案”的提示。
解決方案:
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{@Overridepublic 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配置如下:
<!-- 配置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
ueditor1.3.6jsp版在struts2應用中上傳圖片報"未找到上傳檔案"解決方案