环境 : springmvc
今天 用 kindeditor 上传图片的时候 遇到一个问题
按照 kindedirot 提供的例子进行图片的上传
FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); List items = upload.parseRequest(request);
在
List items = upload.parseRequest(request);
的时候 得到的 items 为空
这个问题比较 蛋疼,
看application 中的配置
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="1024000000" /> </bean>
其中 CommonsMultipartResolver 类中有一个
public boolean isMultipart(HttpServletRequest request) { return request != null && ServletFileUpload.isMultipartContent(request); }
在
MultipartFilter 中
@Override protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { MultipartResolver multipartResolver = lookupMultipartResolver(request); HttpServletRequest processedRequest = request; if (multipartResolver.isMultipart(processedRequest)) { if (logger.isDebugEnabled()) { logger.debug("Resolving multipart request [" + processedRequest.getRequestURI() + "] with MultipartFilter"); } processedRequest = multipartResolver.resolveMultipart(processedRequest); } else { if (logger.isDebugEnabled()) { logger.debug("Request [" + processedRequest.getRequestURI() + "] is not a multipart request"); } } try { filterChain.doFilter(processedRequest, response); } finally { if (processedRequest instanceof MultipartHttpServletRequest) { multipartResolver.cleanupMultipart((MultipartHttpServletRequest) processedRequest); } } }
将 request 转换为 MultipartHttpServletRequest (StandardMultipartHttpServletRequest)
----------------------------------
/** * Create a new StandardMultipartHttpServletRequest wrapper for the given request. * @param request the servlet request to wrap * @throws MultipartException if parsing failed */ public StandardMultipartHttpServletRequest(HttpServletRequest request) throws MultipartException { super(request); try { Collection<Part> parts = request.getParts(); MultiValueMap<String, MultipartFile> files = new LinkedMultiValueMap<String, MultipartFile>(parts.size()); for (Part part : parts) { String filename = extractFilename(part.getHeader(CONTENT_DISPOSITION)); if (filename != null) { files.add(part.getName(), new StandardMultipartFile(part, filename)); } } setMultipartFiles(files); } catch (Exception ex) { throw new MultipartException("Could not parse multipart servlet request", ex); } }
但是 在 List items = upload.parseRequest(request); 中 需要的 request 是 HttpServletRequest 所以 这里得到的list 为空
==============================================
解决方法 有两个
1. 定义一个filter 名字为 filterMultipartResolver 并且放到 spring mvc 的filter 以前
2. 重写 org.springframework.web.multipart.commons.CommonsMultipartResolver 类中的
isMultipart 方法
例如 通过 kindeditor 过来的 请求 都有 一个默认参数 dir
public class MyCommonsMultipartResolver extends CommonsMultipartResolver { private static final Logger log = Logger.getLogger(MyCommonsMultipartResolver.class); @Override public boolean isMultipart(HttpServletRequest request) { String dir = request.getParameter("dir"); if(dir!=null){ // kindeditor 上传图片的时候 不进行request 的转换 return false; } return super.isMultipart(request); } }
========
欢迎拍砖。
各位大神 如果有更好的方法,请尽管拍过来。
相关推荐
Spring MVC整合kindeditor-4.1.11富文本编辑器示例, 原创已经测试成功.开发工具为eclipse,服务器是tomcat.其中具体的表述,也已经在博客中发表,可以关注一下.
富文本编辑kindeditor使用 java 实现 spring mvc也有可以参考
kindeditor本地上传图片支持token字段,kindeditor本身图片上传并无token参数,本资源利用原生ajax改造上传代码。
.NET MVC 中使用 kindeditor 中图片上传和查看功能 的正确使用方式
kindeditor极容易在.net里面配置,本方法介绍上传文件盒图片,十分简单,通过测试,假如您觉得好的话,请给五分哦!
spring-boot-easyui-kindeditor 整合源码
优化kindeditor,修改flash批量上传图片方式为H5上传,添加第三方视频代码功能,添加手机尺寸预览,粘贴时自动上传网络图片,粘贴时自动上传截图,地图宽度可设置百分比显示...
NULL 博文链接:https://huhongyu.iteye.com/blog/1816790
1、 解决kindeditor编辑器无法保存 2、 解决kindeditor上传文件框IE11 看不见或者位置不对问题
NULL 博文链接:https://daidaidaiksw-163-com.iteye.com/blog/1041263
使用kindeditor编辑器上传文件demo 。注意要看 kindeditor/jsp文件夹中的readme.txt
NULL 博文链接:https://shelltea.iteye.com/blog/386781
个人项目,公司项目都使用的是这个编辑器, 个人觉得还不错,使用也很方便简单,功能比较全, 有兴趣的自己可以二次开发,不会使用的也可以扣我,
vue 使用kindeditor粘贴复制图片上传给自己服务器,单独图片上传,避免用户到处寻找,解决了用户粘贴复制截图时候,图片变成base64,上传给后台的时候长度过于长,所以在粘贴的时候就上传给服务器,最后以形式显示在富...
各种语言对应的文件夹下有demo文件引用文件要改成自己程序的路径 页面可以按照demo去配置即可 很好用 支持视频上传
这是本人写的一个基于KindEditor-4.1.9的Java项目,采用Struts2框架,实现了KindEditor单张图片上传、批量图片上传,可以上传到image目录下的子目录中,可返回上一级目录,并实现了按名称、大小、类型排序的功能。...
自己实现的简单weike系统(ssh+kindEditor) 具有发任务,竞选任务,站内短信息,任务托管等功能 界面没有多少美化。。。 使用注解方式
主要为大家详细介绍了springmvc+kindeditor文件上传实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
富文本编辑框asp.net mvc功能源码kindeditor4
优化kindeditor,修改flash批量上传图片方式为H5上传,添加第三方视频代码功能,添加手机尺寸预览,粘贴时自动上传网络图片,粘贴时自动上传截图,地图宽度可设置百分比显示...