springboot+vue集成百度富文本编辑器ueditor+后端上传图片配置

springboot+vue集成百度富文本编辑器ueditor+后端上传图片配置

先来一张效果图

springboot+vue集成百度富文本编辑器ueditor+后端上传图片配置_第1张图片

开始

1、下载UEditor官网最新的jsp版本的包,下载完成解压之后得到一个utf8-jsp的文件夹,里面包含的内容如下:
下载地址:https://ueditor.baidu.com/website/download.html。这里下载的是jsp版本。

springboot+vue集成百度富文本编辑器ueditor+后端上传图片配置_第2张图片

除了jsp文件夹和index.html文件外,把所有的文件都复制到前台目录下的static里文件夹里,如下图:springboot+vue集成百度富文本编辑器ueditor+后端上传图片配置_第3张图片
2.编辑 UEditor 编辑器 配置文件
我们打开 ueditor.config.js,修改其中的window.UEDITOR_HOME_UR配置,如下:
window.UEDITOR_HOME_URL = “/static/UE/”; //指定编辑器资源文件根目录
var URL = window.UEDITOR_HOME_URL || getUEBasePath();

ueditor.config.js文件有很多配置,可以在这里进行一些初始化的全局配置,比如编辑器的默认宽高等:
,initialFrameWidth:1000 //初始化编辑器宽度,默认1000
,initialFrameHeight:320 //初始化编辑器高度,默认320
其他的参数配置,在该文件中有详细列出,或者参考官方文档 http://fex.baidu.com/ueditor/

3.将编辑器集成到系统中
打开 /src/main.js 文件,插入下面的代码:

import ‘…/static/UE/ueditor.config.js’
import ‘…/static/UE/ueditor.all.min.js’
import ‘…/static/UE/lang/zh-cn/zh-cn.js’
import ‘…/static/UE/ueditor.parse.min.js’

4.开发公共组件 UE.vue
我们在 /src/components/ 目录下创建 UE.vue文件,作为我们的编辑器组件文件。
下面代码提供简单功能,具体使用根据需求完善该组件即可。




5.在其他页面中使用该组件
简单地创建一个需要UEditor的页面,再该页面中使用刚才封装好的UE.vue组件:





6.配置完上述内容后,控制台可能会出现"后台配置项返回格式出错,上传功能将不能正常使用!“的报错,
我们在编辑器中上传图片或者视频,也会出现响应的报错,这是因为没有配置服务器的请求接口,在ueditor.config.js中,对serverUrl进行配置:
// 服务器统一请求接口路径
, serverUrl:”/baseApi/ueditor/exec" //连接后台的接口(/baseApi/为后台跨域的代理接口)

7.前端配置到这里就可以,剩下的是后端配置
idea 的pom文件导入一下jar包

		
            commons-codec
            commons-codec
            1.10
        
        
            commons-io
            commons-io
            2.6
        
        
            org.json
            json
            20180130
        
        
            commons-fileupload
            commons-fileupload
            1.3
        
        
            commons-lang
            commons-lang
            2.6
        
   将jsp目录下的lib目中的ueditor.jar文件中的所有类全部拿出来(具体方式自己决定,反编译工具或者拿到源码都可以),放到后端项目中,然后将config.json放到项目的resources中,如下图:

springboot+vue集成百度富文本编辑器ueditor+后端上传图片配置_第4张图片
springboot+vue集成百度富文本编辑器ueditor+后端上传图片配置_第5张图片
然后在control层新建一个UeditorController.java的类,如下:
其中 public String exec(HttpServletRequest request) throws UnsupportedEncodingException {}get请求为editor初始化, public Map execPost(HttpServletRequest request, HttpServletResponse response) throws IOException {}post请求为上传图片接口,
前端ueditor.config.js中,对serverUrl进行配置:
// 服务器统一请求接口路径
, serverUrl:"/baseApi/ueditor/exec" //此接口就是下面写的controller内的接口。

ResponseObject responseObject=fileManagerController.uploadFile(request);这个为调用的上传图片具体逻辑的方法

@RestController
@CrossOrigin
@RequestMapping("/api/ueditor")
public class UeditorController {
    @Autowired
    private FileManagerController fileManagerController;

    @RequestMapping(value = "/exec", method = RequestMethod.GET)
    public String exec(HttpServletRequest request) throws UnsupportedEncodingException {
        request.setCharacterEncoding("utf-8");
        String rootPath = request.getRealPath("/");
        return new ActionEnter( request, rootPath ).exec();
    }
    @RequestMapping(value = "/exec", method = RequestMethod.POST)
    public Map execPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("utf-8");
//        response.setHeader("Content-Type","test/html");
        response.setContentType("text/html;charset=utf-8");
        String rootPath = request.getRealPath("/");
        new ActionEnter( request, rootPath ).exec();
        ResponseObject responseObject=fileManagerController.uploadFile(request);
        Map map=(Map) responseObject.getData();
        String title=String.valueOf(map.get("fileName"));
        String group=String.valueOf(map.get("cruSavePath"));
        String url=String.valueOf(map.get("cruUrlPath"));
        Map map1=new HashMap();
        map1.put("title",title);
        map1.put("group",group);
        map1.put("url",url);
//        map1.put("type",".jpg");
        map1.put("state","SUCCESS");
//        map1.put("size","0");
        map1.put("original",title);
        Object o = JSONObject.toJSON(map1);
        System.out.println(o);
//        return o.toString();
        return map1;
    }

    @RequestMapping(value="/config",method = RequestMethod.GET)
    public void config(HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("application/json");

        String rootPath = request.getSession().getServletContext().getRealPath("/");
        try {
            String exec = new ActionEnter(request, rootPath).exec();
            PrintWriter writer = response.getWriter();
            writer.write(exec);
            writer.flush();
            writer.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

最后 后台代码打包到服务器,还需创建UeditorConfig类并修改ConfigManager.java这个类的
initEnv()方法来解决把项目打成jar包后读取不到config.json配置文件的问题

package com.zm.homeapi.common.ueditor.config;

public final class UeditorConfig {

    public static String configContent = "/*前后端通信相关的配置,注释只允许使用多行方式*/"+
            "{"+
            "/*上传图片配置项*/"+
            "\"imageActionName\":\"uploadimage\",/*执行上传图片的action名称*/"+
            "\"imageFieldName\":\"upfile\",/*提交的图片表单名称*/"+
            "\"imageMaxSize\":2048000,/*上传大小限制,单位B*/"+
            "\"imageAllowFiles\":[\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\"],/*上传图片格式显示*/"+
            "\"imageCompressEnable\":true,/*是否压缩图片,默认是true*/"+
            "\"imageCompressBorder\":1600,/*图片压缩最长边限制*/"+
            "\"imageInsertAlign\":\"none\",/*插入的图片浮动方式*/"+
            "\"imageUrlPrefix\":\"\",/*图片访问路径前缀*/"+
            "\"localSavePathPrefix\":\"\",/*图片访问路径前缀*/"+
            "\"imagePathFormat\":\"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",/*上传保存路径,可以自定义保存路径和文件名格式*/"+
            "/*{filename}会替换成原文件名,配置这项需要注意中文乱码问题*/"+
            "/*{rand:6}会替换成随机数,后面的数字是随机数的位数*/"+
            "/*{time}会替换成时间戳*/"+
            "/*{yyyy}会替换成四位年份*/"+
            "/*{yy}会替换成两位年份*/"+
            "/*{mm}会替换成两位月份*/"+
            "/*{dd}会替换成两位日期*/"+
            "/*{hh}会替换成两位小时*/"+
            "/*{ii}会替换成两位分钟*/"+
            "/*{ss}会替换成两位秒*/"+
            "/*非法字符\\:*?\"<>|*/"+
            "/*具请体看线上文档:fex.baidu.com/ueditor/#use-format_upload_filename*/"+
            ""+
            "/*涂鸦图片上传配置项*/"+
            "\"scrawlActionName\":\"uploadscrawl\",/*执行上传涂鸦的action名称*/"+
            "\"scrawlFieldName\":\"upfile\",/*提交的图片表单名称*/"+
            "\"scrawlPathFormat\":\"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",/*上传保存路径,可以自定义保存路径和文件名格式*/"+
            "\"scrawlMaxSize\":2048000,/*上传大小限制,单位B*/"+
            "\"scrawlUrlPrefix\":\"\",/*图片访问路径前缀*/"+
            "\"scrawlInsertAlign\":\"none\","+
            ""+
            "/*截图工具上传*/"+
            "\"snapscreenActionName\":\"uploadimage\",/*执行上传截图的action名称*/"+
            "\"snapscreenPathFormat\":\"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",/*上传保存路径,可以自定义保存路径和文件名格式*/"+
            "\"snapscreenUrlPrefix\":\"\",/*图片访问路径前缀*/"+
            "\"snapscreenInsertAlign\":\"none\",/*插入的图片浮动方式*/"+
            ""+
            "/*抓取远程图片配置*/"+
            "\"catcherLocalDomain\":[\"127.0.0.1\",\"localhost\",\"img.baidu.com\"],"+
            "\"catcherActionName\":\"catchimage\",/*执行抓取远程图片的action名称*/"+
            "\"catcherFieldName\":\"source\",/*提交的图片列表表单名称*/"+
            "\"catcherPathFormat\":\"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",/*上传保存路径,可以自定义保存路径和文件名格式*/"+
            "\"catcherUrlPrefix\":\"\",/*图片访问路径前缀*/"+
            "\"catcherMaxSize\":2048000,/*上传大小限制,单位B*/"+
            "\"catcherAllowFiles\":[\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\"],/*抓取图片格式显示*/"+
            ""+
            "/*上传视频配置*/"+
            "\"videoActionName\":\"uploadvideo\",/*执行上传视频的action名称*/"+
            "\"videoFieldName\":\"upfile\",/*提交的视频表单名称*/"+
            "\"videoPathFormat\":\"/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}\",/*上传保存路径,可以自定义保存路径和文件名格式*/"+
            "\"videoUrlPrefix\":\"\",/*视频访问路径前缀*/"+
            "\"videoMaxSize\":102400000,/*上传大小限制,单位B,默认100MB*/"+
            "\"videoAllowFiles\":["+
            "\".flv\",\".swf\",\".mkv\",\".avi\",\".rm\",\".rmvb\",\".mpeg\",\".mpg\","+
            "\".ogg\",\".ogv\",\".mov\",\".wmv\",\".mp4\",\".webm\",\".mp3\",\".wav\",\".mid\"],/*上传视频格式显示*/"+
            ""+
            "/*上传文件配置*/"+
            "\"fileActionName\":\"uploadfile\",/*controller里,执行上传视频的action名称*/"+
            "\"fileFieldName\":\"upfile\",/*提交的文件表单名称*/"+
            "\"filePathFormat\":\"/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}\",/*上传保存路径,可以自定义保存路径和文件名格式*/"+
            "\"fileUrlPrefix\":\"\",/*文件访问路径前缀*/"+
            "\"fileMaxSize\":51200000,/*上传大小限制,单位B,默认50MB*/"+
            "\"fileAllowFiles\":["+
            "\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\","+
            "\".flv\",\".swf\",\".mkv\",\".avi\",\".rm\",\".rmvb\",\".mpeg\",\".mpg\","+
            "\".ogg\",\".ogv\",\".mov\",\".wmv\",\".mp4\",\".webm\",\".mp3\",\".wav\",\".mid\","+
            "\".rar\",\".zip\",\".tar\",\".gz\",\".7z\",\".bz2\",\".cab\",\".iso\","+
            "\".doc\",\".docx\",\".xls\",\".xlsx\",\".ppt\",\".pptx\",\".pdf\",\".txt\",\".md\",\".xml\""+
            "],/*上传文件格式显示*/"+
            ""+
            "/*列出指定目录下的图片*/"+
            "\"imageManagerActionName\":\"listimage\",/*执行图片管理的action名称*/"+
            "\"imageManagerListPath\":\"/ueditor/jsp/upload/image/\",/*指定要列出图片的目录*/"+
            "\"imageManagerListSize\":20,/*每次列出文件数量*/"+
            "\"imageManagerUrlPrefix\":\"\",/*图片访问路径前缀*/"+
            "\"imageManagerInsertAlign\":\"none\",/*插入的图片浮动方式*/"+
            "\"imageManagerAllowFiles\":[\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\"],/*列出的文件类型*/"+
            ""+
            "/*列出指定目录下的文件*/"+
            "\"fileManagerActionName\":\"listfile\",/*执行文件管理的action名称*/"+
            "\"fileManagerListPath\":\"/ueditor/jsp/upload/file/\",/*指定要列出文件的目录*/"+
            "\"fileManagerUrlPrefix\":\"\",/*文件访问路径前缀*/"+
            "\"fileManagerListSize\":20,/*每次列出文件数量*/"+
            "\"fileManagerAllowFiles\":["+
            "\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\","+
            "\".flv\",\".swf\",\".mkv\",\".avi\",\".rm\",\".rmvb\",\".mpeg\",\".mpg\","+
            "\".ogg\",\".ogv\",\".mov\",\".wmv\",\".mp4\",\".webm\",\".mp3\",\".wav\",\".mid\","+
            "\".rar\",\".zip\",\".tar\",\".gz\",\".7z\",\".bz2\",\".cab\",\".iso\","+
            "\".doc\",\".docx\",\".xls\",\".xlsx\",\".ppt\",\".pptx\",\".pdf\",\".txt\",\".md\",\".xml\""+
            "]/*列出的文件类型*/"+
            ""+
            "}";

}



private void initEnv () throws FileNotFoundException, IOException {

		File file = new File(this.originalPath);

		if (!file.isAbsolute()) {
			file = new File(file.getAbsolutePath());
		}

		this.parentPath = file.getParent();
		String configContent=this.filter(UeditorConfig.configContent);

		try{
			JSONObject jsonConfig = new JSONObject( configContent );
			this.jsonConfig = jsonConfig;
		} catch ( Exception e ) {
			this.jsonConfig = null;
		}

	}

最后效果图:
springboot+vue集成百度富文本编辑器ueditor+后端上传图片配置_第6张图片
ok搞定

你可能感兴趣的:(富文本编辑器)