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

  • 相关阅读:
    Maven+JSP+Servlet+JDBC+Redis+Mysql实现的黑马旅游网
    Thymeleaf+SpringBoot+SpringDataJPA实现的中小医院信息管理系统
    Thymeleaf+SpringBoot+Mybatis实现的家庭财务管理系统
    JSP+Struts2+JDBC+Mysql实现的校园宿舍管理系统
    JSP+SSH+Mysql+C3P0实现的传智播客网上商城
    JSP+SSH+Mysql实现的学生管理系统
    JSP+Servlet+C3P0+Mysql实现的简单新闻系统
    笔记:EF出现列名 'Discriminator' 无效、类没有加入数据库上下文也被数据迁移生成表
    判断字符串中是否存在的几种方案:string.indexof、string.contains、list.contains、list.any几种方式效率对比
    Sql server 中关闭ID自增字段(SQL取消ID自动增长)
  • 原文地址:https://www.cnblogs.com/herd/p/5888860.html
Copyright © 2011-2022 走看看