今天一直在整我的一个项目的编辑器上传图片,我用的是百度UEditor 1.3版本号的;如今已经有了1.4的了,只是还算比較新吧,可是官网上面没有上传图片这些的教程,而网上对于这方面的资料非常少啊,折腾了我半天,看了一些曾经版本号的上传图片的问题,最后最终搞定了。
先说说我的这个项目的配置情况吧
用的是SSH框架:struts2.3.16 spring3.2.5 hibernate3.3.2
ueditor 1.3-utf-8-jsp版
jdk 1.7
开发工具用的是myeclipse10.7
直接把项目结构图贴上吧,图片略微p了一下,可是基本的东西都在
这个是ueditor目录里面的文件
须要将commons-fileupload-1.2.2.jar和ueditor.jar两个jar包放入lib目录下;注意commons-fileupload-1.2.2.jar在struts2里面也有,不要冲突了
这里在myeclipse里面会有js报错,不用管,看不惯能够直接delete掉全部js错误,只是要注意不要把真正的错误给delete掉了哦,比方jsp的错误,可能是类引用路径错了,这个要好好改改
这里怎样在jsp页面里面引用编辑器就不说了,自己去UEditor官网去找,说的比較具体,主要就说说怎么上传图片,附件这些都是类似的,这些在官网没怎么说明。
一般部署好后上传到一部分就会显示路径错误,未知路径,找不到上传文件之类的,这是由于使用struts2,被struts2的默认拦截器StrutsPrepareAndExecuteFilter给拦截掉了。所以我们要自己写一个拦截器,将其对图片、附件上传等不要进行拦截。
以下贴一下我的拦截器的代码吧
package com.phn.interceptor; 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 UEditorFilter extends StrutsPrepareAndExecuteFilter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; // 获取url String url = request.getRequestURI(); if ("/XXX/ueditor/jsp/imageUp.jsp".equals(url)) { // 这里用XXX表示项目名,imageUp.jsp是上ueditor里面传图片的jsp,表示这个jsp不要被过滤,同理附件等上传也是一样配置 // 使用对编辑器的拦截器 chain.doFilter(req, res); } else {// 前往使用默认的拦截器 super.doFilter(req, res, chain); } } }
上面代码比較简单,我就不具体说明了,相信大家应该能够看懂大致的意思
以下是web.xml的改动,原来的web.xml
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
改动后的web.xml
<filter> <filter-name>struts2</filter-name> <filter-class>com.phn.interceptor.UEditorFilter</filter-class>//这里配置的就是我自定义的拦截器 </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
最后在tomcat里面部署好,执行測试一下,例如以下成功
这里我主要參考了
http://bbs.csdn.net/topics/390678241?page=1#post-397864644
http://download.csdn.net/detail/xiangyangsanren/4849558