一、前言

在一些页面中,进行 发表文章、评论等功能,都要涉及到富文本编辑器,
如 CSDN 的 markdown 编辑器

使用传统的 textarea 标签是远远满足不了需求的,
现在流行的富文本编辑器主要有两个,ckeditor 和 百度的 UEditor,
① 前者比较简单,可以先感受一下富文本编辑器。
② 后者功能更加强大,可以单图、多图上传,还可以截图、代码高亮等特性,但是使用起来不太通用、简单。

二、代码示例

下面来个 [文本读写]

1、前端
简单的界面 edit.html

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>文本编辑器</title><!--引入ckeditor--><script type="text/javascript" src="ckeditor/ckeditor.js"></script><script type="text/javascript">//替换指定name的textarea为富文本编辑器CKEDITOR.replace('edi')</script></head><body><form action="diary/sub" method="post"><div><!--加入ckdeitor类使其为富文本编辑器--><textarea class="ckeditor" name="edi"></textarea></div><input type="submit" value="提交" /></form></body></html>

效果如下:

2、后台
由于逻辑比较简单,为了方便,使用 SpringBoot,并且 省略了 service 层

实体

package com.cun.bean;import java.util.Date;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;@Table(name = "t_diary")
@Entity
public class Diary {public Diary() {super();// TODO Auto-generated constructor stub}@Id@GeneratedValueprivate Integer diaryId;@Column(length=60)private String title;private String content;private Date releaseDate;private Integer typeId = -1;public Diary(String title, String content, int typeId) {super();this.title = title;this.content = content;this.typeId = typeId;}public Integer getDiaryId() {return diaryId;}public void setDiaryId(Integer diaryId) {this.diaryId = diaryId;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public Date getReleaseDate() {return releaseDate;}public void setReleaseDate(Date releaseDate) {this.releaseDate = releaseDate;}public Integer getTypeId() {return typeId;}public void setTypeId(Integer typeId) {this.typeId = typeId;}}

dao

package com.cun.dao;import org.springframework.data.jpa.repository.JpaRepository;import com.cun.bean.Diary;public interface DiaryDao extends JpaRepository<Diary, Integer> {}

控制

package com.cun.controller;import java.util.Date;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.cun.bean.Diary;
import com.cun.dao.DiaryDao;@Controller
@RequestMapping("/diary")
public class DiaryController {@Autowiredprivate DiaryDao diaryDao;@ResponseBody@RequestMapping("/sub")public void sub(String edi) {Diary diary = new Diary();diary.setContent(edi);Date date = new Date();diary.setReleaseDate(date);diaryDao.save(diary);}@ResponseBody@RequestMapping("/get/{id}")public String getText(@PathVariable("id") Integer id) {return diaryDao.findOne(id).getContent();}}

其他 pom、application 配置,不是重点,省略

三、功能简单演示

1、输入文本
点击提交

2、查看数据库
数据已经存进去了,并且是带有样式标签的

3、显示文本
在浏览器输入链接,这个 RequestMapping 使用 rest 风格

可见浏览器显示的文本,是刚才输入的文本样式

四、ckeditor实现图片上传

图片上传,要使用 ckeditor 完整版,效果图如下

先点击

则显示如下,可见图片上传默认是关闭的

1、启动图片上传

①修改 image.js

在下面这个地方

下面设置为开启

② 再次打开,则多了个上传

2、配置图片上传请求,
① 修改 config.js,例如按下面这样修改,

CKEDITOR.editorConfig = function( config ) {// Define changes to default configuration here. For example:// config.language = 'fr';// config.uiColor = '#AADC6E';//设置自己图片上传的Controller的RequestMapping,注意是配置在函数里边config.filebrowserUploadUrl="/edit/ckeditorUpload"; };

②编写 Controller

package com.cun.controller;import java.io.File;import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
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;@Controller
@RequestMapping("/edit")
public class CkeditorController {// 注意路径格式,一般为项目路径下的一个文件夹里边,项目发布到linux服务器上又得改了String imageFilePath = "C://LLLLLLLLLLLLLLLLLLL/20180209/TestCkeditor/src/main/webapp/static/myImage/";/*** 进入编辑器页面* @return*/@RequestMapping("/ckeditor")public String editor() {return "edit";}/*** 编辑器图片上传实现* @param file* @param CKEditorFuncNum* @return* @throws Exception*/@ResponseBody@RequestMapping("/ckeditorUpload")//名字upload是固定的,有兴趣,可以打开浏览器查看元素验证public String ckeditorUpload(@RequestParam("upload") MultipartFile file, String CKEditorFuncNum) throws Exception {// 获取文件名String fileName = file.getOriginalFilename();// 获取文件的后缀名String suffixName = fileName.substring(fileName.lastIndexOf("."));//实际处理肯定是要加上一段唯一的字符串(如现在时间),这里简单加 cunString newFileName = "cun" + suffixName;//使用架包 common-io实现图片上传FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imageFilePath + newFileName));//实现图片回显,基本上是固定代码,只需改路劲即可StringBuffer sb = new StringBuffer();sb.append("<script type=\"text/javascript\">");sb.append("window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ",'" + "/static/myImage/" + newFileName+ "','')");sb.append("</script>");return sb.toString();}}

3、效果
① 打开该富文本编辑器的

② 选择你要上传的图片,我选择仙剑三一张照片~~

③ 点击上传到服务器,能进入如下的界面,表示成功了

④ 额外,不妨看一下图片有没有上传到设置对应的目录,是有的!

五、小结

1、使用起来还是很简单的,使应用更具有人性化
2、本项目的简单版源代码:https://github.com/larger5/SpringBoot-Ckeditor.git
3、本项目的完整版源代码:https://github.com/larger5/SpringBoot-Ckeditor2.git

使用 SpringBoot + Ckeditor 富文本编辑器、图片上传相关推荐

  1. 富文本编辑器图片上传失败的BUG解决:IndexError:list index out of range

    富文本编辑器图片上传失败的BUG解决 问题原因 我们将通过Django上传的图片保存到了FastDFS中,而保存在FastDFS中的文件名没有后缀名(.png/.jpg/.jif),而ckeditor ...

  2. layui富文本编辑器上传图片java_解决layui富文本编辑器图片上传无法回显的问题...

    layui富文本编辑器用起来挺方便的,但是不足的是不提供图片上传的接口,需要自己写上传接口,而且返回的数据类型要符合layui富文本编辑器图片上传插件的要求,否则图片可以上传成功,但是无法回显,这个问 ...

  3. layui富文本编辑器图片上传无法回显问题解决

    layui富文本编辑器用起来挺方便的,但是不足的是不提供图片上传的接口,需要自己写上传接口,而且返回的数据类型要符合layui富文本编辑器图片上传插件的要求,否则图片可以上传成功,但是无法回显,这个问 ...

  4. springboot整合H+,基于summernote的富文本编辑器图片上传

    我在做这块任务时遇到了好几个问题,也查了一些资料,自己总结的一些东西,希望可以帮到一些有需要的朋友,废话不多说开始看代码. 首先看前台页面: 需要注意的是summernote的默认图片上传是base6 ...

  5. SSM+KindEditor实现富文本编辑器图片上传

    场景 KindEitor官方文档: http://kindeditor.net/demo.php 实现 效果 下载Kindeditor 下载地址: http://kindeditor.net/down ...

  6. WangEditor富文本编辑器图片上传踩坑之路

    最近由于业务需求,需要用到富文本编辑器,找寻了好久,起初想使用百度的ueditor,但在使用的过程中实在是遇到了太多的坑,于是另外锁定了一款富文本编辑器--wangEditor.这是一款轻量级的富文本 ...

  7. bootstrap summernote富文本编辑器图片上传干货分享

    个人技术网站 欢迎关注 今天做后台的时候需要一个富文本编辑器组件,由于项目使用的是bootstrap,所以毫不犹豫的用上了summernote富文本编辑器.文档各大大牛已经整理出来了  但是图片上传到 ...

  8. Layui富文本编辑器图片上传接口(.NET C#)

    本来想偷懒找个现成的接口,搜了一下发现没有现成的,那我在这写一个并分享给大家吧. demo打包好了在我的csdn下载中心:http://download.csdn.net/download/xiang ...

  9. Tinymce富文本编辑器图片上传即编辑配置详解

    Tinymce富文本编辑器 本站使用的也是Tinymce富文本编辑器,非常的好用,就是图片上传和编辑配置上有点麻烦,当时没有看完Tinymce官网的资料,导致浪费了点时间,下面就把图片上传的配置分享给 ...

  10. vue项目 vue-quill-editor富文本编辑器+图片上传

    目录 基础使用: 进阶版: 使用 el-upload 图片上传: 进阶版2.0: 可拖动调整图片大小: 基础使用: 富文本编辑器: 此方法得到的图片为base64编码,图片上传在下面. npm ins ...

最新文章

  1. 学python推荐书籍-零基础学python推荐几本python学习的书籍
  2. volley用法之 以post方式发送 json 参数
  3. MATLAB入门(三)
  4. array_walk与array_map的区别
  5. gcc编译选项-Os的用法
  6. PMP读书笔记(第10章)
  7. 小学数学加减法测试软件,儿童数学加法运算火箭(测试版)
  8. sklearn 常用模块及类与方法
  9. 【吴恩达课后编程作业pytorch实现】Keras入门与残差网络的搭建【1】
  10. 零基础学sql要多久_成人零基础学习钢琴,要多久能学会?
  11. 杭州哪里学python好_杭州哪里学python好
  12. 机器学习基础算法20-回归曲线拟合
  13. 如何通过ildasm/ilasm修改assembly的IL代码
  14. Unity播放服务器端视频 发布到Android移动端
  15. android手机密码忘了哪个电话打开,如果手机锁屏密码忘记了怎么办_安卓手机锁屏密码忘了的处理办法-系统城...
  16. Netty网络编程第七卷
  17. MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)
  18. 机场生产运行数据统计指标-第二篇-航班类
  19. 如何优雅地打印一个Java对象?
  20. C语言实现Prim算法与Kruskal算法(浙大 陈越版)

热门文章

  1. 微信小程序 音频播放功能createInnerAudioContext
  2. iphone android传电话,如何将 iPhone 的联系人转移到安卓
  3. dell服务器读不到无线网卡,DELL Inspiron 7420 正版win10无法识别有线网卡和无线网卡...
  4. 如何将Excel文件中数据导入数据库
  5. Maven Eclipse Junit单元测试解 + 进阶使用Mockito做service层单测(万物皆可mo)+对于异步async方法的单测
  6. Visual Assist Trial 的补丁安装和破解
  7. python怎么统计单词总数_Python【习题】:统计纯英文文本中总字数
  8. iOS网络编程(一)
  9. 基于javaweb的足球俱乐部管理系统
  10. Python学习记录_通过科赫曲线绘制出完整雪花