UEditor 源码自带一个上传的jsp代码,详见ueditor的“/ueditor1_2_4_0-utf8-jsp/jsp/”目录下的imageUp.jsp 及fileUp.jsp文件。但是如果项目中使用了Apache Struts2框架,将/* 过滤 ,由于该框架默认使用Apache的Commons FileUpload组件和内建的FileUploadInterceptor拦截器实现文件上传,将request中的文件域封装到action中的一个File类型的属性中,并删除request中的原有文件域,因此上传文件会失败。
自己找很久未找到原因,上网查才明白了.
解决办法1,自己写个action 代替原来的jsp文件 ,实现上传
2,自定义一个过滤器,单独指定不对 /ueditor1_2_4_0-utf8-jsp/jsp/ 下的jsp进行过滤;代码示例如下:
Java代码 :
- 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 {
- 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("/mywebapp/ueditor1_2_4_0-utf8-jsp/jsp/")) {
- System.out.println("使用自定义的过滤器");
- chain.doFilter(req, res);
- }else{
- System.out.println("使用默认的过滤器");
- super.doFilter(req, res, chain);
- }
- }
- }
struts过滤器的配置改为
Xml代码 :
- <filter>
- <filter-name>struts2filter-name>
- <filter-class>
- com.sufeng.ahan.util.MyStrutsFilter
- filter-class>
- filter>
- <filter-mapping>
- <filter-name>struts2filter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
- 原文:
阅读(856) | 评论(0) | 转发(0) |