转型 java 开发后入手的第一个项目,写写博客记录一下
该项目使用的是 sping boot + mybatis plus + thymeleaf 项目架构,前后端不分离
公司前端提供的页面里提供了这个富文本编辑器,大概去了解了一下,这是一个个人维护的轻量编辑器。
官网:www.wangEditor.com文档:www.kancloud.cn/wangfupeng/wangeditor3/332599上传图片到服务器官方文档地址:https://www.kancloud.cn/wangfupeng/wangeditor3/335782官方提供了两种上传本地图片的方式:
使用自带接口进行上传,构造好相应的返回数据即可完全自定义上传图片过程因为本项目的上传图片并不是上传到服务器然后返回完整的图片 URL,所以使用编辑器自带的上传是不太行的;这里考虑的是使用自定义的方式:
页面点击上传图片后,可以获取到图片文件对象,使用前端的 window.URL.createObjectURL(files[0]) 方法会构建处理一个临时 url 处理使用编辑器对象为编辑器文本框中进行标签元素添加,此时可以实现图片点击上传后的展示通过 ajax 发起请求,将文件对象传到后端,存储到 MongoDB 中,返回当前这条数据 id,放到页面元素中通过编辑器提供的方法取到编辑器中的内容,构建参数,发送到后端,进行数据更新 // 编辑器设置 var E = window.wangEditor var editor2 = new E('#editor') // 添加 token // editor2.customConfig.uploadImgParams = { // token: token, // header: header // } // 自带方法请求的接口 // editor2.customConfig.uploadImgServer = '/editorimg' // 图片以 base64 方式展示 // editor2.customConfig.uploadImgShowBase64 = true // 设置图片大小为 1M // editor2.customConfig.uploadImgMaxSize = 1 * 1024 * 1024; // 一次上传的图片不能大于 5 张 // editor2.customConfig.uploadImgMaxLength = 5; // 图片默认名称 // editor2.customConfig.uploadFileName = 'myFile'; // 自定义图片上传 editor2.customConfig.customUploadImg = function (files, insert) { // files 是 input 中选中的文件列表 // 注意这里 files 中的第 0 个元素才是当前上传的文件对象 // insert 是获取图片 url 后,插入到编辑器的方法 var url = window.URL.createObjectURL(files[0]) var formData = new FormData(); formData.append("files", files[0]); $.ajax({ type:"POST", url:"/addimg", //接口请求地址 dataType:'JSON', contentType:false, processData: false, data:formData, success:function(data){ // 图片的展示,预览 url // 图片上传成功,获取到 id,放到标签中然后放到页面元素中 success:function(data){ editor2.cmd.do("insertHTML", "<p><img src=" + url + " style='width: 100px; height: 100px;margin-left:10px' class='imgid' id='" + data.id + "'></p>") error:function () { console.log("失败") } }); } editor2.create() // 编辑器设置尾部