zoukankan      html  css  js  c++  java
  • ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案

    摘要: 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{
    	@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配置如下:
    <!-- 配置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

  • 相关阅读:
    QOMO Linux 4.0 正式版发布
    LinkChecker 8.1 发布,网页链接检查
    pgBadger 2.1 发布,PG 日志分析
    Aletheia 0.1.1 发布,HTTP 调试工具
    Teiid 8.2 Beta1 发布,数据虚拟化系统
    zLogFabric 2.2 发布,集中式日志存储系统
    开源电子工作套件 Arduino Start Kit 登场
    Piwik 1.9 发布,网站访问统计系统
    Ruby 1.9.3p286 发布,安全修复版本
    toBraille 1.1.2 发布,Java 盲文库
  • 原文地址:https://www.cnblogs.com/herd/p/5888860.html
Copyright © 2011-2022 走看看