当前位置: 代码迷 >> Web前端 >> struts2:UEditor插入图片,下传失败,显示差号,没有异常信息
  详细解决方案

struts2:UEditor插入图片,下传失败,显示差号,没有异常信息

热度:118   发布时间:2012-11-22 00:16:41.0
struts2:UEditor插入图片,上传失败,显示差号,没有错误信息
这个错误其实是自己代码的错误,相当愚蠢。如果不是巧合,这个bug可能会让我永远没法发现
我本来是做了一个项目,本地发布地址是xxxxxxxxx/zs。给客户发布的地址是xxxxxxxxx/zsyz。就这么个小问题,害我加了两条班,不过都是自己的错,活该。原因是这样的,
======大神的话=======================
Struts2的Filter会过滤到上传文件的request,封装为Struts2自己的MultiPartRequestWrapper,这个时候再到UEditor里的Uploader中用commons-fileupload组件解析request,就无法获取到正确的文件流,所以上传失败。
========不是我说的======================
因为这个原因,人家UEditor已经给出了解决方案,就是写一个自己的过滤器。例如:
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;
        //不过滤的url
        String url = request.getRequestURI();
        if ("/zs/ueditor/jsp/imageUp.jsp".equals(url)) {
            chain.doFilter(req, res);
        }else{
            super.doFilter(req, res, chain);
        }
    }
}


这样,就不让strut2过滤imageUp.jsp的请求。完美。可是注意这里项目名字是写死的。【zs】这里。所以当我换了发布地址的时候,问题就来了。/zsyz/ueditor/jsp/imageUp.jsp这个请求将继续被拦截。需要改这里的名字。谨记。希望跟我犯了一样低级错误的童鞋可以引以为戒。
  相关解决方案