KindEditor上传图片及使用

article/2025/9/24 11:33:19

本文为原创,只为互相学习!

主页:写程序的小王叔叔的博客欢迎来访👀

支持:点赞收藏关注

社区:JAVA全栈进阶学习社区欢迎加入​​​​​​​

编辑器使用

1)官网:在线HTML编辑器

2)使用

 如果在编辑器中,某个功能不想让他显示,则可在kindeditor-all.js中的K.options = { items (通常在263行处)}  删除相应的功能名称(在浏览器中,用F12找相应功能的data-name)即可
       参考文档:https://blog.csdn.net/qq_30258957/article/details/78762464
       官       网:http://kindeditor.net/doc.php     

<!-- 添加文本编辑器插件 -->
<script charset="utf-8" type="text/javascript"  src="/kindeditor/kindeditor-all.js"></script>
<script charset="utf-8" type="text/javascript"  src="/kindeditor/lang/zh-CN.js"></script>
<textarea 
id="editor_id" 
name="content" 
style="width:700px;height:200px;visibility:hidden;">
</textarea>
	  <script type="text/javascript">var editor1;/**页面初始化 创建文本编辑器工具**/KindEditor.ready(function(K) {editor1 = K.create('textarea[name="content"]', {//定义属性cssPath : '../plugins/code/prettify.css',uploadJson : '../jsp/upload_json.jsp',fileManagerJson : '../jsp/file_manager_json.jsp',allowFileManager : true});prettyPrint();});function submitProduct(){/**取出文本编辑器的内容**/editor1.sync();//同步编辑器文件var productName = $("#productName").val();var productPrice = $("#productPrice").val();var productReward = $("#productReward").val();var productStock = $("#productStock").val();var productImgUrl = $("#productImgUrl").val();var productImgList = $("#productImgList").val();var productIntroduce = document.getElementById('editor_id').value; //获取编辑器普通jquery取值即可$.ajax({			type: 'get',			url: '/admin/saveProduct',	dataType : 'json', data: {'productName':productName,'productPrice':productPrice,'productReward':productReward,'productStock':productStock,'productImgUrl':productImgUrl,'productImgList':productImgList,'productIntroduce':productIntroduce},success : function(data){		if(data.errorCode == "0"){		alert("添加成功");	location.href="/admin/loginProductList/list";return;		  		}		  		if(data.errorCode == "1"){		alert("添加失败");		return;		  			}	var productIntroduce = data.productIntroduce;KindEditor.html("#editor_id", productIntroduce);//给编辑器赋值},		 error:function(){	alert("system error");		}			});	} </script>
CREATE TABLE `drp_product` (`product_id` bigint(20) NOT NULL AUTO_INCREMENT,`product_name` varchar(255) DEFAULT NULL,`product_style` varchar(255) DEFAULT NULL,`product_address` varchar(255) DEFAULT NULL,`product_price` double DEFAULT NULL,`product_stock` int(11) DEFAULT NULL,`product_introduce` text,`create_date` datetime DEFAULT NULL,`product_img_url` varchar(255) DEFAULT NULL,`product_reward` decimal(19,2) DEFAULT NULL,`product_sales` int(11) NOT NULL,`product_type` int(11) NOT NULL,`favorable_price` decimal(19,2) DEFAULT NULL,`product_details` varchar(255) DEFAULT NULL,`product_keyword` varchar(255) DEFAULT NULL,`product_priority` varchar(255) DEFAULT NULL,`number_of_goods` int(11) NOT NULL,`shopping_car_id` bigint(20) DEFAULT NULL,`product_img_list` varchar(255) DEFAULT NULL,`product_style_detailed` varchar(255) DEFAULT NULL,PRIMARY KEY (`product_id`)) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8;
/**如果在编辑器中,某个功能不想让他显示,则可在kindeditor-all.js中的K.options = { items (通常在263行处)}删除相应的功能名称(在浏览器中,用F12找相应功能的data-name)即可参考文档:https://blog.csdn.net/qq_30258957/article/details/78762464http://kindeditor.net/doc.php 官网**/

html代码

<!-- 添加文本编辑器插件 --><script charset="utf-8" type="text/javascript"  src="/kindeditor/kindeditor-all.js"></script><script charset="utf-8" type="text/javascript"  src="/kindeditor/lang/zh-CN.js"></script><script src="/kindeditor/themes/default/default.css"  type="text/css" rel="stylesheet"></script><!--编写文本区域--><textarea id="editor_id" name="content" style="width:700px;height:200px;visibility:hidden;"></textarea><script type="text/javascript">var editor1;/**页面初始化 创建文本编辑器工具**/KindEditor.ready(function(K) {//定义生成编辑器的文本类型editor1 = K.create('textarea[name="content"]', {cssPath : '../plugins/code/prettify.css',allowImageUpload: true, //上传图片框本地上传的功能,false为隐藏,默认为trueallowImageRemote : false, //上传图片框网络图片的功能,false为隐藏,默认为trueformatUploadUrl:false,uploadJson : '/kindEditor/upLoad',//文件上传请求后台路径allowFileManager : true,afterCreate : function() {var self = this;K.ctrl(document, 13, function() {self.sync();document.forms['example'].submit();});K.ctrl(self.edit.doc, 13, function() {self.sync();document.forms['example'].submit();});}  });prettyPrint();});
</script>

上传图片的工具类:

@WebServlet("/kindEditor/upLoad")
public class KindEditorUpload extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置Response响应的编码resp.setContentType("text/html; charset=UTF-8");//获取一个Response的Write对象PrintWriter writer = resp.getWriter();//文件保存目录路径String savePath = "D:\\images/";String saveUrl = savePath;//定义允许上传的文件扩展名HashMap<String, String> extMap = new HashMap<String, String>();extMap.put("image", "gif,jpg,jpeg,png,bmp");// extMap.put("flash", "swf,flv");//extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");// extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");//最大文件大小long maxSize = 1000000;String dirName = req.getParameter("dir");if (dirName == null) {dirName = "image";}if (!extMap.containsKey(dirName)) {writer.println(getError("目录名不正确。"));return;}//创建文件夹savePath += dirName + "/";saveUrl += dirName + "/";File saveDirFile = new File(savePath);if (!saveDirFile.exists()) {saveDirFile.mkdirs();}SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");String ymd = sdf.format(new Date());savePath += ymd + "/";saveUrl += ymd + "/";File dirFile = new File(savePath);if (!dirFile.exists()) {dirFile.mkdirs();}FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);upload.setHeaderEncoding("UTF-8");List items = null;try {items = upload.parseRequest(req);} catch (FileUploadException e) {e.printStackTrace();}Iterator itr = items.iterator();while (itr.hasNext()) {FileItem item = (FileItem) itr.next();String fileName = item.getName();long fileSize = item.getSize();if (!item.isFormField()) {//检查文件大小if (item.getSize() > maxSize) {writer.println(getError("上传文件大小超过限制。"));return;}//检查扩展名String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();if (!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)) {writer.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));return;}SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;try {File uploadedFile = new File(savePath, newFileName);item.write(uploadedFile);} catch (Exception e) {writer.println(getError("上传文件失败。"));return;}String url = "http://localhost:8080/images/image/"+ ymd + "/" + newFileName;//显示图片的主要路径JSONObject obj = new JSONObject();obj.put("error", 0);obj.put("url",url);writer.println(obj.toString());}}//将writer对象中的内容输出writer.flush();//关闭writer对象writer.close();}//一个私有的方法,用于响应错误信息private String getError(String message) {JSONObject obj = new JSONObject();obj.put("error", 1);obj.put("message", message);return obj.toString();}}

显示图片工具类:

@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {@Value("${cbs.imagesPath}")private String mImagesPath;//访问图片方法@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {if(mImagesPath.equals("") || mImagesPath.equals("${cbs.imagesPath}")){String imagesPath = WebAppConfig.class.getClassLoader().getResource("").getPath();if(imagesPath.indexOf(".jar")>0){imagesPath = imagesPath.substring(0, imagesPath.indexOf(".jar"));}else if(imagesPath.indexOf("classes")>0){imagesPath = "file:"+imagesPath.substring(0, imagesPath.indexOf("classes"));}imagesPath = imagesPath.substring(0, imagesPath.lastIndexOf("/"))+"/images/";mImagesPath = imagesPath;}LoggerFactory.getLogger(WebAppConfig.class).info("imagesPath="+mImagesPath);registry.addResourceHandler("/images/**").addResourceLocations(mImagesPath);//访问图片的路径super.addResourceHandlers(registry);}}

页面显示文本编辑内容:

<span id="productIntroduceId"></span> <!--将要显示文本编辑器内容部分-->
<input id="productIntroduce" th:value="${product.productIntroduce}" hidden="hidden"><!--获取文本编辑器内容部分--><script type="text/javascript">window.onload=function () {//将文本编辑器内容 用js进行替换显示document.getElementById("productIntroduceId").innerHTML=$("#productIntroduce").val();}
</script>

效果图:

以上是自己整理的,并测试过,可以直接用


转载声明:本文为博主原创文章,未经博主允许不得转载

⚠️注意 ~

💯本期内容就结束了,如果内容有误,麻烦大家评论区指出

如有疑问❓可以在评论区留言💬或私信留言💬,尽我最大能力🏃‍♀️帮大家解决👨‍🏫!

如果我的文章有帮助,欢迎打赏✔️鼓励博主🏃,您的鼓励是我分享的动力🏃🏃🏃~


http://chatgpt.dhexx.cn/article/9kKBUBHA.shtml

相关文章

KindEditor上传本地图片

自己动手配置了一下KindEditor文本编辑器上传本地图片的功能&#xff0c;不需要动手写action&#xff0c;相关详细配置和代码如下。 我用的是KindEditor 4.1.10的版本&#xff0c;需要用到的童鞋去下载对应的版本。 1.↓↓↓这个插件里面需要手动配置的两个重要的jsp文件。 …

kindeditor4.1.10图片上传配置及使用说明

1效果展示 1.1 点击图片上传按钮 1.2 弹出选择框,可以从已上传的图片中选择上传,也可以从本地上传。 1.3选择从图片空间上传,文件夹模式浏览所有已上传的图片 1.4从本地选择图片上传 1.5上传效果 1.6 上传路径: WebRoot/upload/image 2-1:kindeditor-4.1.10版本插件 2-2:…

onpaste事件的浅谈

今天看书的时候&#xff0c;偶然看到onpaste的这个属性所以记录下来&#xff0c;为以后查阅而用&#xff1a; 具体的用法是<input type“text” οnpaste"function ***"/>&#xff0c;标签只是用来做说明并不是非得是input标签 虽然是触发的条件是&#xff1…

手机html粘贴事件,详解浏览器中的粘贴事件 paste onpaste 事件

在最新的H5 API里已经有了对粘贴事件的支持, 事件名为paste, 平时用的较少,但最近想做一个粘贴板管理器,于是就调研了一下这个粘贴,复制事件. 那么调研的第一步是什么那? 当然是百度了,但高手都不百度,直接控制台调试 创建一个id为editor的文本域, 为其添加一个paste事件的…

onkeyup事件,onpaste事件,完成实时表单验证

先上效果图&#xff1a; input框&#xff0c;用户输入值的方式就两种&#xff0c;一种是键盘输入&#xff0c;一种是鼠标粘贴。onkeyup事件可以在键盘输入的时候绑定事件&#xff0c;onpaste"return false"&#xff0c;设置不允许粘贴。 onkeyup进行表单验证的优…

利用JavaScript从剪贴板获取图片并上传服务器

1、参考&#xff1a; 使用 JavaScript File API 实现文件上传FileReader.readAsDataURL()基于Servlet3的文件上传中的示例2&#xff1a;基于JQuery的单文件上传 2、onpaste 剪贴板事件 onpaste 事件在用户向元素中粘贴文本时触发。有三种方式可以在元素中粘贴内容&#xff1…

Internet协议的安全性

网际层 安全问题 1.IP数据报在传递过程中被窃取 措施&#xff1a;读ip数据报进行加密 2.数据净荷可能被截取后修改 措施&#xff1a;对ip数据净荷进行完整性检测 3. 攻击者发送伪造源地址数据包欺骗接收者&#xff0c;也称为ip欺骗 措施&#xff1a;对数据包的源地址鉴别 4. A…

winget InternetOpenUrl() failed. 0x80072f7d

今天使用 winget 安装东西的时候提示&#xff1a; 尝试更新源时失败&#xff1a; winget 执行此命令时发生意外错误&#xff1a; InternetOpenUrl() failed. 0x80072f7d : unknown error对于我而言是因为其他原因关闭了 tls 1.2&#xff0c;在控制面板->网络和 Internet-&g…

Internet网际协议 --- IP地址

IP地址 一.IP地址简介二.分类IP地址三.IP子网划分与子网掩码四.无类域间路由CIDR五.路由聚合六.IP包转发 一.IP地址简介 1.IP地址&#xff0c;网络上的每一台主机&#xff08;或路由器&#xff09;的每一个接口都会分配一个全球唯一的32位的标识符。 2.将IP地址划分为固定的类…

HTTP-web-Internet

互联网&#xff08;Internet&#xff09; 互联网&#xff1a;将全球计算机互联在一起的网络。目前最流行的实现协议是TCP/IP。 万维网&#xff08;WWW&#xff09; 万维网&#xff1a;基于HTTP协议实现全球性、动态交互、跨平台的分布式图形信息系统。是互联网上应用最为广泛的…

internet协议

1&#xff1a;引言 IP时TCP/IP中的核心协议IP提供了一种尽力而为&#xff0c;无连接的数据报交付服务 2&#xff1a;IP头部 正常的IPV4头部大小为20字节。除非存在选项&#xff08;少见&#xff09;IPV6的长度是40字节&#xff0c;没有选项字段&#xff0c;IPV6有扩展头部 …

Internet网际协议---IPv4协议

IPv4协议 一.IPv4协议简介二.IPv4数据报格式&#xff08;由首部和数据组成&#xff09;三.数据报分片与重组四.IP协议功能及报头字段总结 一.IPv4协议简介 1.IPv4协议&#xff1a;网际协议版本4&#xff0c;一种无连接的协议&#xff0c;是互联网的核心&#xff0c;也是使用最…

网络Internet

前言 加油 原文 网络常用会话 ❶ This online store discounted all computers for sale. 该网店削价出售全部待售的电脑。 ❷ The latest laptop is very portable. 最新的这款笔记本很便携。 ❸ Add up the figures in this column. 把这一栏的数字合计一下。 ❹ Consu…

Internet协议——IP

IP Internet协议——IPIP协议与tcp/IP的关系IP地址的表示IP地址的特点地址转换——ARP反向地址转换——RARP计算子网掩码 IP数据报的格式IP数据报首部的固定部分 Internet协议——IP IP&#xff1a;通信子网的最高层。提供无连接的数据报传输机制。IP协议是点到点&#xff0c;…

InternetOpen InternetOpenUrl InternetReadFile 和 InternetCloseHandle

文章目录 InternetOpen函数功能函数声明第一个参数第二个参数第三个参数第四个参数第五个参数返回值补充&#xff1a;InternetOpenUrl函数功能函数声明第一个参数第二个参数第三个参数第四个参数第五个参数第六个参数返回值补充补充InternetReadFile函数功能函数声明第一个参数…

juniper设备日常操作指南

1、日常show操作 # show 查看所有配置 # show | display set 查看set格式的所有配置 # show system | display set 查看set格式的system层级配置 # show system login | display set 查看set格式的system层级下的login层级配置# run show version # run show route 1.1.1.…

这几个juniper巡检命令超实用

1. CPU利用率核查 show chassis routing-engine2. MEM利用率核查 show chassis routing-engine3. OSPF邻居关系核查 show ospf neighbor4. LDP端口状态检查 show ldp interface5. ISIS邻居关系检查 show isis adjacency6. BGP邻居关系检查 show bgp neighbor7. HSRP信息检…

Juniper

Juniper Networks[编辑] Juniper Networks公司类型 上市&#xff08;NYSE&#xff1a;JNPR&#xff09;成立1996年2月代表人物执行长&#xff1a;Shaygan Kheradpir 技术长&#xff1a;Pradeep Sindhu 董事长&#xff1a;Scott Kriens总部地点 加州森尼韦尔&#xff08;Sunnyva…

Juniper入门之RIP

拓扑 配置 JUNOS-1 #配置接口 interfaces {em2 {unit 10 {family inet { address 12.1.1.1/24;}}}lo0 {unit 10 {family inet {address 1.1.1.1/32;}}} } protocols {rip {import import-policy;group rip-group {export export-policy;neighbor em2.10 {send …

Juniper Radius And Tacacs Server 认证测试

1. 简述 Juniper产品支持Radius、Tacacs及本地Password认证。根据不同的用户需求&#xff0c;3A服务器认证可能会结合域用户、LDAP、RSA-Token等认证服务器进行综合认证。此测试报告使用Juniper VSRX和Cisco ACS5.2验证3A相关认证选项。 2. 测试拓扑 使用Vmware workstation 9…