KindEditor编辑图文文章实战开发

2024-02-03 06:10

本文主要是介绍KindEditor编辑图文文章实战开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面:

在项目开发过程中,我们经常会遇到需要用户输入一些较长的文本,这些文本通常情况下带有相应的格式,就比如加粗、背景颜色、加入的图片等等,因此我们就需要借助于文本编辑器这样的小插件,今天给大家介绍一个文本编辑器————KindEditor
http://kindeditor.net/about.php 附上官网链接

什么是KindEditor:

KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。 KindEditor 使用 JavaScript 编写,可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用。

在这里插入图片描述
上图的文本为了保存格式,就不能以简单的文本进行存储,我们需要带上对应的样式进行存储:

<p style="text-align:center;"><strong><span style="color:#E53333;">Think Different</span></strong>
</p>
<h4>&nbsp;&nbsp;&nbsp;&nbsp;Here’s to the crazy ones. The misfits. The rebels.<em> The troublemakers. The round pegs in the square holes.</em> The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo.&nbsp;
</h4>
<p>&nbsp;&nbsp;&nbsp;<span style="color:#337FE5;">&nbsp;</span><span style="color:#337FE5;">You can quote them, disagree with them</span>, glorify or vilify them. <u>About the only thing you can’t do is ignore them</u>. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.
</p>
<p><br />
</p>

图中的效果很明了,存储的文本带着相关的标签进行存储,也就是带着相关的格式进行存储,保证格式不丢失。
**~~

KindEditor编辑图文文章实战开发:

预期效果展示;
在这里插入图片描述
简单介绍:
1、点击图片按钮:
在这里插入图片描述
2、网络图片和本地上传
在这里插入图片描述
网络图片:指的就是网络资源中的图片url
图片空间:指的是本地服务器上已经存在的图片
本地上传: 将本地的图片上传到编辑器

3.开发思路
本地上传实际上就是将本地的图片上传到服务器中,然后咋编辑器中对图片偏进行一个回显。图片空间的实现思路也是如此。

前端代码实现:

<%@page pageEncoding="UTF-8" isELIgnored="false"  %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="path" value="${pageContext.request.contextPath}"/><%--引入kindEditor开发依赖的js文件--%>
<script charset="utf-8" src="${path}/kindeditor/kindeditor-all.js"></script>
<script charset="utf-8" src="${path}/kindeditor/lang/zh-CN.js"></script>
<script>KindEditor.ready(function(K) {K.create('#editor_id', {//图片上传的请求uploadJson:"${path}/editor/upload",//上传图片的名字,默认为imgFilefilePostName:"photo",//管理图片空间allowFileManager:true,//查询服务器图片的请求,在图片空间中进行回显fileManagerJson:"${path}/editor/queryAllPhoto",//将编辑器中的内容整合到form表单中,这里我们用不到,可以删除afterBlur:function(){ //编辑器失去焦点(blur)时执行的回调函数this.sync();   //将编辑器中的内容同步到表单}});});
</script><%--准备编辑器容器--%>
<textarea id="editor_id" name="content" style="width:700px;height:300px;">
&lt;strong&gt;HTML内容&lt;/strong&gt;
</textarea>

后台代码实现:

1、本地文件上传
插件要求我们的返回值类型为map。

 @RequestMapping("upload")public HashMap<String,Object> upload(MultipartFile photo, HttpServletRequest request) throws IOException {HashMap<String, Object> map = new HashMap<>();//获取文件上传路径String realPath = request.getSession().getServletContext().getRealPath("/upload/edit");File file = new File(realPath);if(!file.exists()){file.mkdirs();}//获取文件名String filename = photo.getOriginalFilename();//给文件名加上时间戳String newFileName = new Date().getTime()+"-"+filename;//获取httpString scheme = request.getScheme();//获取本地ipString serverName = request.getServerName();//获取端口号int serverPort = request.getServerPort();//获取项目名String contextPath = request.getContextPath();//网络路径拼接String s = scheme + "://" + serverName + ":" + serverPort+contextPath + "/upload/edit"+"/"+ newFileName;System.out.println(s);try {photo.transferTo(new File(realPath,newFileName));map.put("error", 0);map.put("url", s);} catch (IOException e) {e.printStackTrace();map.put("error", 1);map.put("url", "上传失败");}return map;}

2.图片空间
图片空间部分要求我们返回的数据格式如下:
样例数据:

{"moveup_dir_path": "","current_dir_path": "","current_url": "\/ke4\/php\/..\/attached\/","total_count": 5,"file_list": [{"is_dir": false,"has_file": false,"filesize": 245132,"dir_path": "","is_photo": true,"filetype": "jpg","filename": "2009321101428.jpg","datetime": "2018-06-06 00:36:39"}]
}

因此我们在开发的过程中,要严格遵守插件给我们的约束,按照"要什么,给什么"的原则进行开发。

@RequestMapping("queryAllPhoto")public HashMap<String,Object> queryAllPhoto(HttpServletRequest request){HashMap<String, Object> maps = new HashMap<>();ArrayList<Object> lists = new ArrayList<>();//获取图片文件夹的路径String realPath = request.getSession().getServletContext().getRealPath("/upload/edit");//获取文件夹File file = new File(realPath);//获取文件夹下所有的文件名称String[] names = file.list();for (int i = 0; i < names.length; i++) {//获取文件名字String name = names[i];HashMap<String, Object> map = new HashMap<>();map.put("is_dir",false); //是否是文件夹map.put("has_file",false); //是否是文件File file1 = new File(realPath, name);map.put("filesize",file1.length()); //文件的大小map.put("is_photo",true); //是否是图片String extension = FilenameUtils.getExtension(name);map.put("filetype",extension); //图片的格式map.put("filename",name); //文件的名字//字符串拆分   1564712632627-下载.jpgString[] split = name.split("-");String times = split[0];long time = Long.parseLong(times);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");String format = dateFormat.format(time);map.put("datetime",format); //上传的时间//封装进集合lists.add(map);}maps.put("current_url","http://localhost:8989/cmfz_lsg/upload/edit/"); //网络路径maps.put("total_count",lists.size());  //文件数量maps.put("file_list",lists);  //文件集合return maps;}

这篇关于KindEditor编辑图文文章实战开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/673201

相关文章

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

IDEA接入Deepseek的图文教程

《IDEA接入Deepseek的图文教程》在本篇文章中,我们将详细介绍如何在JetBrainsIDEA中使用Continue插件接入DeepSeek,让你的AI编程助手更智能,提高开发效率,感兴趣的小... 目录一、前置准备二、安装 Continue 插件三、配置 Continue 连接 DeepSeek四

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实