若依项目(前端后分离版)整合百度(Ueditor)富文本编辑器

1、Ueditor 资源下载

ueditor 官网:http://ueditor.baidu.com

ueditor API 文档:http://ueditor.baidu.com/doc

ueditor github 地址:http://github.com/fex-team/ueditor

2、资源下载之后的文件解压,改个名字,改为UEditor,复制放入项目public文件夹下

3、方便使用,形成组件,放入components文件夹下

ueditor.vue 代码,如果需要在headers中配置Authorization,在config中配置无效,需修改js文件,具体修改见下文

<template>
  <div>
    <div :id="id" type="text/plain"></div>
  </div>
</template>
<script>
 import '/public/static/Ueditor/ueditor.config.js'
 import '/public/static/Ueditor/ueditor.all.min.js'
 import '/public/static/Ueditor/lang/zh-cn/zh-cn.js'
 import '/public/static/Ueditor/ueditor.parse.min.js'

 import { getToken } from "@/utils/auth";

  export default {
    name: 'UEditor',
    props: {
      /* 编辑器的内容 */
      value: {
        type: String,
        default: "",
      },
      /* 只读 */
      readOnly: {
        type: Boolean,
        default: false,
      },
      id: {
          type: String,
          default: 'editor'
      }
    },
    data () {
      return {
        editor: null,
        defaultMsg:"",
        config: {
          initialFrameWidth: '100%',
          initialFrameHeight: 280,
          //上传文件接口
          serverUrl: process.env.VUE_APP_BASE_API + "/ueditor/upload",
          //serverUrl : '/ueditor/jsp/config.json',
          readonly: this.readOnly,
          placeholder: "请输入内容",
          imageUrlPrefix: process.env.VUE_APP_BASE_FILE_API,//图片访问前缀
        },
      }
    },
    mounted() {   
        this.$nextTick(() => {
            this.editor = UE.getEditor(this.id,this.config); // 初始化UE
            this.editor.addListener("ready", () => {
                this.editor.execCommand('insertHtml', this.value);
                // 确保UE加载完成后,放入内容
                this.editor.focus()
            })
        })

    },
     watch: {
      value : function(val) {
        if(val==null||val==undefined){
          val="";
        }
        this.editor.setContent(val);    
      }
    },
    methods: {
      // 获取内容方法
      getUEContent() {
        return this.editor.getContent()
      },
     // 清空编辑器内容
      clearContent() {
          return this.editor.execCommand('cleardoc');
      },
    },
    destroyed() {
      this.editor.destroy();
    },
    beforeDestroy() {
        // 组件销毁的时候,要销毁 UEditor 实例,下次进入页面才能重新加载出编辑器
       if (this.editor !== null && this.editor.destroy) {
           this.editor.destroy();
       }
    },
  }
</script>

4、在main.js中引入组件,可全局使用

// 百度富文本组件
import Editor from "@/components/Editor"
//全局组件挂载
Vue.component('UEditor', UEditor)

5、实现图片上传,配置后端接口

(1)Java端建个EditorController,配置图片上传接口,路径与serverUrl保持一致;

(2)将UEditorConfig.json文件放在项目的resources文件夹下,内容从 UEditor/jsp/config.json 下复制

(3)EditorController代码,文件文件和获取配置写成两个接口,获取配置使用get请求,上传使用post请求



/**
 * 百度编辑器图片上传
 * 
 * @author ruoyi
 */
@RestController
@RequestMapping("/ueditor")
public class EditorController
{
    @Autowired
    private ServerConfig serverConfig;

    /**
     * 读取配置文件
     * @param action
     * @param noCache
     * @return
     * @throws IOException
     */
    @GetMapping("/upload")
    public String getConfig(String action,String noCache) throws IOException {
        Resource resource = new ClassPathResource("UEditorConfig.json");
        InputStream in=resource.getInputStream();
        if (in != null) {
            String  text = Utils.read(in);
            return text;
        }
        return null;
    }

    /**
     * editor通用上传请求(单个)
     */
    @PostMapping("/upload")
    public AjaxResult editorUploadFile(String action, MultipartFile upfile) {
        try{
            AjaxResult ajax = AjaxResult.success();
            // 上传文件路径
            String filePath = RuoYiConfig.getUploadPath()+"/ueditor";
            // 上传并返回新文件名称
            String fileName = FileUploadUtils.upload(filePath, upfile);
            //String url = serverConfig.getUrl() + fileName;
            ajax.put("state", "SUCCESS");
            ajax.put("url", fileName);
            ajax.put("original", upfile.getOriginalFilename());
            if (action.equals("uploadimage")) {
                ajax.put("title", "图片文件");
            } else if (action.equals("uploadvideo")) {
                ajax.put("title", "视频文件");
            } else {
                ajax.put("title", "文件");
            }
            return ajax;
        }catch (Exception e){
            e.printStackTrace();
            return AjaxResult.error("上传失败");
        }

    }

}

(4)配置授权认证,不配置,则访问授权报错

第一种不鉴权,在java端SecurityConfig 文件中开放/ueditor 接口,方便快捷;

第二种增加授权,在前端,修改ueditor.all.js 文件,get请求时需加上Authorization权鉴信息

post请求上传图片并回显,需修改请求代码以及返回消息解析代码

  var fileForm = new FormData();
                fileForm.append("upfile",input.files[0]);

                var oReq = new XMLHttpRequest();
                var list = window.document.cookie.split(";")
                let filterList = list.filter(item =>{
                     return item.substring(0,11) === "Admin-Token";
                 })
                var token = filterList[0].substr(12);

                oReq.open("POST",imageActionUrl,true);
                oReq.setRequestHeader("Authorization", "Bearer "+token);
                oReq.send(fileForm);
                oReq.onreadystatechange = function(responseText) {
                    if (oReq.readyState == 4 && oReq.status == 200) {
                        var responseData = eval("("+oReq.responseText+")");
                        callback(responseData); //回调函数
                    }
                };

修改后,删除ueditor.all.min.js,复制ueditor.all.js并重命名为ueditor.all.min.js;

6、图片回显,若前后端部署在同一个服务器,可以不用配置imageUrlPrefix路径UEditorConfig.json保持不动,上传接口返回全路径;若不在同一服务器,可删除UEditorConfig.json中imageUrlPrefix,同时在ueditor.vue中配置访问前缀,且在上传接口返回路径使用半路径

7、项目使用

配置id,每次引用,配置不同id值;

  <UEditor v-model="form.content"  :id="ueidtorName" ref="ue"/>

获取编辑器内容,并赋值;

 this.form.content = this.$refs.ue.getUEContent();
### 回答1: Spring Boot可以很方便地整合富文本编辑器,常用的富文本编辑器UEditor、KindEditor、TinyMCE等。一般的步骤如下: 1. 引入富文本编辑器的依赖,可以通过Maven或Gradle进行引入。 2. 配置富文本编辑器的相关参数,如上传图片的路径、大小限制等。 3. 在前端页面中引入富文本编辑器的JS文件,并进行初始化。 4. 在后端代码中处理上传的图片或文件,并返回相应的URL给前端。 具体实现可以参考相关的文档或教程。 ### 回答2: Spring Boot是现代化的Java开发框架,它快速、简单、灵活,并支持各种各样的技术和框架。当我们需要构建一个面向Web的应用程序时,富文本编辑器是必不可少的一个组件。本文将探讨如何将富文本编辑器集成到Spring Boot项目中。 首先,我们需要选择一个适合我们需求的富文本编辑器组件。市场上大量的富文本编辑器,常见的有UEditor、KindEditor、TinyMCE等。在这里,我们选用UEditor作为我们的富文本编辑器组件。 接下来,我们需要将UEditor引入我们的项目中。在pom.xml文件中添加相关依赖: ```xml <dependency> <groupId>com.baidu.ueditor</groupId> <artifactId>ueditor</artifactId> <version>1.1.2</version> </dependency> ``` 然后,在Spring Boot的配置文件application.yml中添加如下配置: ```yaml spring: resources: static-locations: classpath:/static/ ueditor: config: classpath:config.json ``` config.json文件是UEditor的配置文件,我们需要将其放到classpath下。config.json的配置项包括上传路径、文件大小等等,可以根据自己的需要进行配置。 现在,我们需要在前端页面中引入UEditor相关资源,如下: ```html <!-- 引入UEditor资源 --> <script type="text/javascript" charset="utf-8" src="../ueditor/ueditor.config.js"></script> <script type="text/javascript" charset="utf-8" src="../ueditor/ueditor.all.js"></script> <!-- 在页面中添加UEditor对象 --> <script type="text/javascript"> var editor = new UE.ui.Editor(); editor.render("editContent"); </script> <!-- 在页面中添加编辑器的容器 --> <div id="editContent"></div> ``` 最后,在后端Controller中处理上传图片的请求,如下: ```java @RequestMapping(value = "/uploadImage", method = RequestMethod.POST) @ResponseBody public Map<String, Object> uploadImage(HttpServletRequest request) { MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartHttpServletRequest.getFile("upfile"); //使用UEditor的UploadUtils上传文件 String imageUrl = UploadUtils.uploadFile(multipartFile); Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("state", "SUCCESS"); jsonMap.put("url", imageUrl); jsonMap.put("title", ""); jsonMap.put("original", ""); return jsonMap; } ``` 至此,我们已经成功地将UEditor富文本编辑器集成到了Spring Boot项目中。在前端页面中,可以使用UEditor编辑器进行富文本的编辑,编辑器支持插入图片、表格、视频等常用的富文本元素。同时,在后台Controller中,我们可以处理UEditor上传图片的请求,并将上传的图片保存在服务器上。 ### 回答3: Spring Boot是现在非常热门的一种Java开发框架,用于快速构建Web应用。而在Web应用中,富文本编辑器也是非常常见的一种组件。在这篇文章中,我们将讨论如何在Spring Boot应用程序中集成富文本编辑器富文本编辑器通常是用JavaScript编写的一种可视化编辑器。它可以允许用户在Web应用程序中创建丰富的文本格式,如加粗、斜体、下划线等等。常见的富文本编辑器有CKEditor、TinyMCE和Froala Editor等。 在集成富文本编辑器时,我们需要考虑以下几个步骤: 1. 在Spring Boot应用程序中引入JavaScript库 在Spring Boot应用程序中,我们可以使用静态资源处理器去引用JavaScript库。我们可以在项目中创建一个“static”文件夹,在其中存放静态资源文件,例如:JS脚本、CSS样式表等等。在HTML页面中引用这些文件时,可以使用Thymeleaf之类的模板引擎。 2. 引入富文本编辑器 一般情况下,我们会选择一个已有的富文本编辑器。我们选择的编辑器应该提供一些API或者一些配置选项,以便我们在其基础上进行定制化开发。 3. 在Spring Boot应用程序中设置API接口 当我们引入了富文本编辑器后,我们需要在Spring Boot应用程序中编写后台API接口,以便前端与后台之间实现数据交互。当用户在富文本编辑器中输入文本或者修改文本时,我们需要将其保存到后台数据库,然后在后续的展示中进行读取。 4. 定制富文本编辑器 最后,我们需要定制化富文本编辑器的一些配置和选项,以便让用户更加方便地进行操作。例如,我们可以开启图片上传功能、修改编辑器的主题等等。 在本文中,我们主要介绍了如何在Spring Boot应用程序中集成富文本编辑器。具体实现过程请参考相关文档和API。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值