springboot集成Ueditor富文本编辑器,实现文件上传功能

1.先去官网上下载百度的Ueditor,下载完以后解压为

​​​​​​在这里插入图片描述
2.创建一个springboot项目

3.将ueditor文件夹粘贴到springboot的resource/static下,目录结构如下 如图
在这里插入图片描述

4.pom文件中加入文件上传相关的jar包,

<!--Ueditor依赖的jar包-->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.4</version>
            </dependency>

            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20170516</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.9</version>
            </dependency>

5.将ueditor/jsp/lib/ueditor-1.1.2.jar加入到项目中

在这里插入图片描述

(1)点击File的project Structure

在这里插入图片描述

(2)点击Modules以后,再点击Scope旁边的绿色加号

在这里插入图片描述

(3)点击Jar or Directories

在这里插入图片描述
(4)选中Ueditorjar包,加入项目中
在这里插入图片描述

6.在templates中创建index.html

在这里插入图片描述

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script src="ueditor/ueditor.config.js"></script>
    <script src="ueditor/ueditor.all.js/ueditor.all.min.js"></script>
    <script src="ueditor/lang/zh-cn/zh-cn.js"></script>
    <script src="ueditor/ueditor.all.js"></script>



</head>
<body>
<textarea name="content" id="content" style="min-height: 500px"></textarea>



</body>

<script type="text/javascript">
    var ue = UE.getEditor('content');
    UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
    UE.Editor.prototype.getActionUrl = function(action) {
        if (action == '/upload') {
            return '/upload'; //在这里返回我们实际的上传图片地址
        } else {
            return this._bkGetActionUrl.call(this, action);
        }
    }
</script>

</html>

7.随便弄一个Controller进入到index.html 中

package com.wu.myapp.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UeditorController {

    @RequestMapping("/login")
    public String getIndex(){

        return "index";
    }



}

8.在ueditor/ueditor.config.js中修改为使用自己的文件上传

之前的为

在这里插入图片描述

var URL = window.UEDITOR_HOME_URL || getUEBasePath();
    //创建自己的文件上传请求路径
	var server_url=window.location.protocol+"//"+window.location.hostname+":"+window.location.port
    /**
     * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
     */
    window.UEDITOR_CONFIG = {

        //为编辑器实例添加一个路径,这个不能被注释
        UEDITOR_HOME_URL: URL

        // 服务器统一请求接口路径
       // , serverUrl: URL + "jsp/controller.jsp"
        , serverUrl: server_url+"/config"
		//imageActionName定义了图片上传后台类及方法
        , imageActionName:"/upload"
        ,imageFieldName: "upfile"
		//上传图片后缀
        , imageAllowFiles: [".png", ".jpg", ".jpeg", ".gif", ".bmp"]
       // ,imageUrlPr图片页面回显默认的前缀
        ,imageUrlPrefix:"http://localhost:8080/ueditor/jsp/"
		//文件上传格式
		,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"
        ]
        //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义

9.创建一个单独的配置Controller

package com.wu.myapp.controller;

import com.baidu.ueditor.ActionEnter;
import org.springframework.stereotype.Controller;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@Controller
public class ServerController {

 @RequestMapping(value = "/config")

 public void config(HttpServletRequest request, HttpServletResponse response) {
//在上传文件后,会返回response,
//通常会导致客户端(浏览器)不能识别内容编码,
// 如果客户端(浏览器)采用非UTF-8方式(比如gbk)解码,
// 客户端就会产生乱码问题。
  response.setContentType("application/json");
  String rootPath = request.getSession().getServletContext().getRealPath("/");
  try {

   response.setCharacterEncoding("UTF-8");

   String exec = new ActionEnter(request, rootPath).exec();

   System.out.println(exec);

   PrintWriter writer = response.getWriter();

   writer.write(new ActionEnter(request, rootPath).exec());

   writer.flush();

   writer.close();

  } catch (IOException e) {

   e.printStackTrace();

  }


 }
}

10.配置上传的controller

package com.wu.myapp.controller;

import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

@Controller
public class UEditorConfigController {

    @RequestMapping(value="/upload")
    @ResponseBody
    public Map<String, Object> images (@RequestParam(value = "upfile", required = false) MultipartFile file, HttpServletRequest request, HttpServletResponse response){
        Map<String, Object> params = new HashMap<String, Object>();
        if (file == null){
            System.out.println("上传文件为空!");
            return null;
        }
        try{

            //getOriginalFilename获取上传的时候文件名
            String fileName = file.getOriginalFilename();
           // System.out.println(fileName);
            //文件后缀
            String suffix = fileName.substring(fileName.lastIndexOf("."),fileName.length());
            //可以改名字,应该为传入数据库的保存图片的路径,
            //这里仅为测试,就随便起个名字,但是不要为中文
            //如果为中文,图片回显的时候,参数为中文,有些浏览器默认不支持中文参数
            String im="xmz";
            File f= new File("src/main/resources/static/ueditor/jsp/"+im+suffix);
            OutputStream out = new FileOutputStream(f);
            FileCopyUtils.copy(file.getInputStream(), out);
            //类似为一个状态码的东西,其中state属性和url是必须的
            params.put("state", "SUCCESS");
            //获取路径
            params.put("url", im+suffix);
            params.put("size", file.getSize());
            params.put("type", file.getContentType());
            params.put("filename", file.getOriginalFilename());
        } catch (Exception e){
            params.put("state", "ERROR");
            e.printStackTrace();
        }
        return params;
    }

}

配置完成,启动项目输入
http://localhost:8080/login
进入index.xml

在这里插入图片描述
点击上传图片

在这里插入图片描述
选一张,然后上传

在这里插入图片描述

上传成功后会图片会自动回显

在这里插入图片描述

其他的富文本编辑器,大致套路相同

上面的代码注释是按照我的理解写的,可能有一些偏差。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值