工作中需要用到UEditor编辑文本,在与springMVC进行整合时,出现了一些问题,结果导致,在进行图片上传时出现如下提示:

上网查询了很多相关资料,此处简要记录下,防止以后遇到类似问题。

一种方式是直接修改源码,步骤如下:

1、编写controller 如下(该接口是ueditor前后台交互的统一路径) :

  1. package com.test.dcdp.controller;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5.  
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8.  
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11.  
  12. import com.baidu.ueditor.ActionEnter;
  13.  
  14. @Controller
  15. @RequestMapping("/ueditor")
  16. public class UeditorController {
  17.  
  18. @RequestMapping("/dispatch")
  19. public void config(HttpServletRequest request, HttpServletResponse response) {
  20. // response.setContentType("application/json");
  21. String rootPath = request.getSession().getServletContext().getRealPath("/");
  22. response.setHeader("Content-Type" , "text/html");
  23. try {
  24. String a = request.getRequestURI();
  25. String exec = new ActionEnter(request, rootPath).exec();
  26. PrintWriter writer = response.getWriter();
  27. writer.write(exec);
  28. writer.flush();
  29. writer.close();
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. }
  33.  
  34. }
  35. }

2、修改ueditor的配置文件 ueditor.config.js(指定后台服务器地址),如下所示

修改前:

  1. var URL = window.UEDITOR_HOME_URL || getUEBasePath();
  2.  
  3. /**
  4. * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
  5. */
  6. window.UEDITOR_CONFIG = {
  7.  
  8. //为编辑器实例添加一个路径,这个不能被注释
  9. UEDITOR_HOME_URL: URL
  10.  
  11. // 服务器统一请求接口路径
  12. , serverUrl: URL + "php/controller.php"

修改后 :

  1. var getRootPath = function (){
            //获取当前网址
            var curWwwPath=window.document.location.href;
            //获取主机地址之后的目录
            var pathName=window.document.location.pathname;
            
            var pos=curWwwPath.indexOf(pathName);
            //获取主机地址
            var localhostPaht=curWwwPath.substring(0,pos);
            //获取带"/"的项目名,如:/uimcardprj
            var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
            
            return(localhostPaht+projectName);
        }
        //获取路径     
        var applicationPath = getRootPath();
        var URL = window.UEDITOR_HOME_URL || getUEBasePath();
        var serverURL = applicationPath;
  2.  
  3. /**
  4. * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
  5. */
  6. window.UEDITOR_CONFIG = {
  7.  
  8. //为编辑器实例添加一个路径,这个不能被注释
  9. UEDITOR_HOME_URL: URL
  10.  
  11. // 服务器统一请求接口路径
  12. , serverUrl: serverURL + "ueditor/dispatch"

3、修改ueditor源码 ConfigManager.java(指定配置文件路径).

修改前 :

  1. /*
  2. * 通过一个给定的路径构建一个配置管理器, 该管理器要求地址路径所在目录下必须存在config.properties文件
  3. */
  4. private ConfigManager ( String rootPath, String contextPath, String uri ) throws FileNotFoundException, IOException {
  5.  
  6. rootPath = rootPath.replace( "\\", "/" );
  7.  
  8. this.rootPath = rootPath;
  9. this.contextPath = contextPath;
  10.  
  11. if ( contextPath.length() > 0 ) {
  12. this.originalPath = this.rootPath + uri.substring( contextPath.length() );
  13. } else {
  14. this.originalPath = this.rootPath + uri;
  15. }
  16.  
  17. this.initEnv();
  18.  
  19. }

修改后 :

  1. /*
  2. * 通过一个给定的路径构建一个配置管理器, 该管理器要求地址路径所在目录下必须存在config.properties文件
  3. */
  4. private ConfigManager ( String rootPath, String contextPath, String uri ) throws FileNotFoundException, IOException {
  5.  
  6. rootPath = rootPath.replace( "\\", "/" );
  7.  
  8. this.rootPath = rootPath;
  9. this.contextPath = contextPath;
  10.  
  11. /*if ( contextPath.length() > 0 ) {
  12. this.originalPath = this.rootPath + uri.substring( contextPath.length() );
  13. } else {
  14. this.originalPath = this.rootPath + uri;
  15. }*/
  16.  
  17. this.originalPath = rootPath + "static" + File.separator + "lib" + File.separator +
  18. "ueditor" + File.separator + "1.4.3" + File.separator + "jsp" + File.separator + "controller.jsp";
  19. ///EdwManage/src/main/webapp/static/lib/ueditor/1.4.3/jsp/controller.jsp
  20.  
  21. this.initEnv();
  22.  
  23. }

如上所述,主要修改 originalPath 的路径,否则ueditor的配置文件(ueditor_config.json)路径是错误的(与springMVC整合的情况),之所以向上面那样拼接路径,是因为我的ueditor相关文件拷贝在了(EdwManage/src/main/webapp/static/lib/ueditor/1.4.3/jsp/controller.jsp)路径里。

4、(若未执行该步操作,在选择好图片后,点击上传,将提示 : “未找到上传文件”)由于上传的文件都会被springmvc的文件上传拦截器拦截,包装,这样百度编辑器接收到文件后不能识别文件格式,因此把spring默认的commonsMultiparResolver,替换成我们自己写的commonsMultiparResolver ,并修改配置文件。

重写CommonsMultipartResolver :

  1. package com.tianwen.dcdp.common;
  2.  
  3. import org.springframework.web.multipart.commons.CommonsMultipartResolver;
  4.  
  5. public class CommonsMultiparResolver extends CommonsMultipartResolver {
  6.  
  7. @Override
  8. public boolean isMultipart(javax.servlet.http.HttpServletRequest request) {
  9. String uri = request.getRequestURI();
  10. System.out.println(uri);
  11. //过滤使用百度UEditor的URI
  12. if (uri.indexOf("ueditor/dispatch") > 0) { //此处拦截路径即为上面编写的controller路径
  13. System.out.println("commonsMultipartResolver 放行");
  14. return false;
  15. }
  16. System.out.println("commonsMultipartResolver 拦截");
  17. return super.isMultipart(request);
  18. }
  19. }

修改springMVC配置文件spring-mvc.xml :

  1. <!-- 修改为我们重写的CommonsMultiparResolver而不是spring提供的 -->
  2. <bean id="multipartResolver"
  3. class="com.tianwen.dcdp.common.CommonsMultiparResolver">
  4. <!-- 默认编码 -->
  5. <property name="defaultEncoding" value="utf-8" />
  6. <!-- 文件大小最大值 -->
  7. <property name="maxUploadSize" value="10485760000" />
  8. <!-- 内存中的最大值 -->
  9. <property name="maxInMemorySize" value="40960" />
  10. </bean>

5、最后配置上传文件保存目录,修改ueditor配置文件(ueditor_config.json):

修改如下参数(即配置上传文件的URL路径,若配置不正确,富文本编辑器中将不能正确显示上传的图片):

  1. "imageUrlPrefix": "http://localhost:80/EdwManage", /* 图片访问路径前缀 */
  2. "imagePathFormat": "/static/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */

此处 imagePathFormat 之所以配置为如上格式,是因为springMVC中,指定了static目录下的资源为静态资源(其他路径都会被springMVC拦截)。

文件默认保存的物理路径为: web应用根路径 + imagePathFormat 。

{yyyy}{mm}{dd} : 按天分类保存

{time}{rand:6} : 随机生成文件名

另外还有一种简单的解决办法:

1、新建一web工程(ueditor)。

2、将下载下来的ueditor文件拷贝到新建工程 的webapps目录下,可参考官网介绍

3、在使用ueditor的工程中,修改ueditor配置文件(ueditor.config.js)如下 :

  1. window.UEDITOR_HOME_URL = "http://localhost/ueditor/";
  2. var URL = window.UEDITOR_HOME_URL || getUEBasePath();
  3.  
  4. /**
  5. * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
  6. */
  7. window.UEDITOR_CONFIG = {
  8.  
  9. //为编辑器实例添加一个路径,这个不能被注释
  10. UEDITOR_HOME_URL: URL
  11.  
  12. // 服务器统一请求接口路径
  13. , serverUrl: URL+ "jsp/controller.jsp"

3、配置上传文件保存路径,修改(ueditor_config.json) :

  1. "imageUrlPrefix": "http://localhost:80/ueditor", /* 图片访问路径前缀 */
  2. "imagePathFormat": "/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */

springMVC -- 对接UEditor(富文本编辑器)的更多相关文章

  1. springMVC -- 整合UEditor(富文本编辑器)

    工作中需要用到UEditor编辑文本,在与springMVC进行整合时,出现了一些问题,结果导致,在进行图片上传时出现如下提示: 上网查询了很多相关资料,此处简要记录下,防止以后遇到类似问题. 一种方 ...

  2. 前后端分离ueditor富文本编辑器的使用-Java版本

    最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的ueditor富文本编辑器,网上找了很多j ...

  3. MVC 使用 Ueditor富文本编辑器

    一.Ueditor 1.下载Ueditor富文本编辑器 官方下载地址: http://ueditor.baidu.com/website/download.html 建议下载开发版,此处我下载的是 . ...

  4. 百度ueditor富文本编辑器的使用

    百度ueditor富文本编辑器的使用 //以下为我在官网下载的ueditor v1.3.5 php版的大楷配置步骤第一步: //配置文件的引入应该比功能文件先引入,最后设置语言类型.即:editor. ...

  5. ASP.NET MVC5 中百度ueditor富文本编辑器的使用

    随着网站信息发布内容越来越多,越来越重视美观,富文本编辑就是不可缺少的了,众多编辑器比较后我选了百度的ueditor富文本编辑器. 百度ueditor富文本编辑器分为两种一种是完全版的ueditor, ...

  6. PHP如何搭建百度Ueditor富文本编辑器

    本文为大家分享了PHP搭建百度Ueditor富文本编辑器的方法,供大家参考,具体内容如下 下载UEditor 官网:下载地址 将下载好的文件解压到thinkphp项目中,本文是解压到PUBLIC目录下 ...

  7. ueditor富文本编辑器使用百度地图自定义动态地图组件及兼容https及http协议

    ueditor富文本编辑器默认支持百度地图组件,但是如果导入动态地图后会加很多默认的地图组件在上面.如果需要自定义动态地图的组件则需要修改ueditor特定的html. ueditor百度地图组件所在 ...

  8. WEB项目中使用UEditor(富文本编辑器)

    Ueditor富文本编辑器是在很多项目里经常用到的框架,是百度开发团队开发的一款很好用的富文本编辑器 下面就是我在一个系统里用到的,有了富文本编辑器,管理员使用起来不是很方便? 所以本博客介绍这个富文 ...

  9. UEditor富文本编辑器简单使用

    UEditor富文本编辑器简单使用 一.下载地址:https://ueditor.baidu.com/website/ 官网中并没有 python 版本的 UEditor 富文本编辑器,本文简单介绍 ...

随机推荐

  1. 在PHPstorm中使用数组短语法[],出现红色波浪

    在PHPstorm中使用数组短语法[],出现红色波浪 1. 在tp3.2.3项目中使用数组短语法[],报错如下错误: Short array syntax is allowed in PHP 5.4 ...

  2. 为什么 char c = 'A';c += 32; 结果输出的是 'a'?

    首先 char 类型的数据只要参与运行会先转换为 int 类型数值(在 ASCII 编码表中 'A' 对应十进制的 65),那么 'A' 转换为 int 为 65,65 + 32 = 97,+= 包含 ...

  3. 深入理解RocketMQ(九)---实战(控制台搭建)

    rocketMQ控制台搭建 (1)下载rocketmq-console代码:https://github.com/875279177/incubator-rocketmq-externals (2)修 ...

  4. JS中字符串和数组的相互转化

    题目:利用var s1=prompt("请输入任意的字符串:") ,可以获取用户输入的字符串,试编程将用户输入的字符串“反转”,并且将字符串输出. 思路:字符串对象的方法中并没有实 ...

  5. 洛谷 P2212 【[USACO14MAR]Watering the Fields S】

    一道最小生成树模板题,这里用的Kruskal算法,把每两点就加一条边,跑一遍最小生成树即可. #include <bits/stdc++.h> using namespace std; s ...

  6. JavaScript学习笔记(1)

    概念: 运行在浏览器端的脚本语言. 构成: ECMAScript(语法) + DOM(文档对象模型) + BOM(浏览器对象模型) 语法: 1.区分大小写 2.变量是弱类型 数据类型: string ...

  7. node 模块正确暴露方法

    一个node模块,为了能够服用,就需要将其暴露,那么如何正确写呢?(参考:https://developer.mozilla.org/zh-CN/docs/Learn/Server-side/Expr ...

  8. a标签绑定点击事件失败

    如图 然后对a标签绑定点击事件  无效 换成span标签可以

  9. H5软键盘弹起收回(IOS与Android)

    IOS下中,软键盘处于窗口最顶层,与原有的窗口不冲突,所以底部导航条不会被顶起,但是在android下,软键盘与窗口处于同一层,所以当软键盘弹起时,当前窗口缩小,那么窗口内容自然要被挤: 解决办法: ...

  10. BZOJ1294 洛谷P2566 状态压缩DP 围豆豆

    传送门 题目描述 是不是平时在手机里玩吃豆豆游戏玩腻了呢?最近MOKIA手机上推出了一种新的围豆豆游戏,大家一起来试一试吧游戏的规则非常简单,在一个N×M的矩阵方格内分布着D颗豆子,每颗豆有不同的分值 ...