【js + ckeditor】插入base64格式的图片

一、需求说明

直接把图片转成base64插入到富文本

二、需求分析

1、富文本图片格式处理位置

在ckeidtor的目录下有个plugins文件夹,在plugins下新建一个文件夹(自己命名,如simpleupload),进入simpleupload文件夹,再新建一个plugins.js文件,对应编写js代码。

2、将图片转为base64

通过调用 FileReader 对象的 readAsDataURL 方法可以将文件读取成一个data URL,再通过这个 data URL 来获取 Base64字符串。

 三、解决办法

plugins.js文件全部代码如下:

(function () {// 保存图片方式:选择图片以base64编码保存var a = {exec: function (editor) {// 此处定义点击按钮时的行为var $file = document.createElement("input");$file.type = "file";$file.accept = ".jpg,.png,.jpeg";// $file.multiple = "multiple";//选择图片时,可以多选$file.click();$file.addEventListener("change", function (e) {var fileList = e.target.files;if (fileList.length > 0) {// 因为一次只允许添加一张图片var imageData = fileList[0];// 检测后缀名var lastIndex = imageData.name.lastIndexOf(".");var imageSuffix = imageData.name.substring(lastIndex + 1);// 判断后缀名if (!(imageSuffix === "png" || imageSuffix === "jpg" || imageSuffix === "jpeg")) {alert('图片格式只支持"png, jpg, jpeg格式"');return;}// 大小不能超过2Mif (imageData.size > 2 * 1024 * 1024) {alert("图片大小不能超过2M");return;}// 使用FileReader接口读取图片var reader = new FileReader();reader.addEventListener("load", function () {var imageBase64 = reader.result; //base64编码editor.insertHtml("<p><img style='max-width:70%' class='ckeditorImg' src=" + imageBase64 + "  ></p>");});// 将图片转成base64格式reader.readAsDataURL(imageData);editor.isImg = true;editor.imgUrl = reader.result;return editor;}});}};b = "simpleupload";CKEDITOR.plugins.add(b, {init: function (editor) {editor.addCommand(b, a);editor.ui.addButton("simpleupload", {label: "添加图片", //鼠标悬停在插件上时显示的名字icon: "plugins/simpleupload/uploadImg.png", //自定义图标的路径command: b,id: "simpleupload"});}});
})();

四、参考链接

参考1:前端实现ckeditor插入图片,不必经过上传到服务器再插入到富文本

参考2:【JS】img标签使用base64图片以及如何将图片转为base64格式_img base64-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务和kafka

一、微服务简介 1.单体架构 分布式--微服务--云原生 传统架构&#xff08;单机系统&#xff09;&#xff0c;一个项目一个工程&#xff1a;比如商品、订单、支付、库存、登录、注册等等&#xff0c;统一部署&#xff0c;一个进程 all in one的架构方式&#xff0c;把所有的…

深入探讨C++的高级反射机制(2):写个能用的反射库

在现代软件开发中&#xff0c;反射是一种强大的特性&#xff0c;它可以支持程序在运行时查询和调用对象的属性和方法。 但是在C中&#xff0c;没有内置的反射机制。我们可以通过一些巧妙的技术模拟反射的部分功能。 上一篇文章写了个简单的反射功能&#xff0c;这回完善一下&a…

3.PyQt6常用基本控件

目录 常用控件 1.文本类控件 1.QLable标签控件 1.设置标签文本 2.设置标签文本和对齐方式 3.换行显示 4.添加超链接 5.为标签设置图片 6.获取标签文本 2.QLineEdit单行文本控件 3.QTextEdit多行富文本控件 4.QPlainTextEdit纯文本控件 5.QSpinBox整数数字选择控件 …

开发板以电脑为跳板连接互联网

标题 开发板以电脑为跳板连接互联网网络共享方式桥接方式 开发板以电脑为跳板连接互联网 分享下用网线直连电脑的开发板如何以电脑为跳板连接互联网的两个方法。 网络共享方式桥接方式 补充下&#xff0c;我的电脑连接的是无线网络&#xff0c;开发板和电脑是用网线进行连接的…

Python 高级编程:文件操作与错误处理

在前几篇文章中&#xff0c;我们介绍了Python的基本语法、函数和模块以及面向对象编程。这些知识对于大部分日常编程问题已经足够&#xff0c;但对于需要分析大数据的人来说&#xff0c;这些还不够。本章将介绍Python的文件操作以及错误处理与调试。 目录 文件操作读文件写文…

C语言单链表的算法之插入节点

一&#xff1a;访问各个节点中的数据 &#xff08;1&#xff09;访问链表中的各个节点的有效数据&#xff0c;这个访问必须注意不能使用p、p1、p2&#xff0c;而只能使用phead &#xff08;2&#xff09;只能用头指针不能用各个节点自己的指针。因为在实际当中我们保存链表的时…

【嵌入式Linux】i.MX6ULL GPIO 中断服务函数注册与编写

文章目录 1 外部中断初始化与中断服务函数1.2 外部中断初始化函数 exti_init1.2.1 GPIO引脚配置1.2.2 中断使能与注册1.2.3 GIC_EnableIRQ()函数的分析 1.3 中断服务函数 gpio1_io20_irqhandler1.3.1 消抖处理1.3.2 中断事件处理1.3.3 清除中断标志 2 BUG处理2.1 问题描述2.2 解…

网易Filmly网盘影片播放器安卓TV版

我们在观看网盘内的影视时&#xff0c;想要高清/原画质观看视频&#xff0c;甚至倍速功能往往都需要开通网盘会员才可以&#xff0c;否则你只能使用”马赛克”画质观看。 最近网易上线了一款播放器&#xff1a;Filmly &#xff0c;它支持直连网盘影视资源&#xff0c;可以高速…

深入理解计算机系统 CSAPP 家庭作业7.12

A:refptr (unsigned)(ADDR(r.symbol) r.addend - refaddr) 0x4004f8 (-4) - 0x4004ea 0xa B:refaddr 0x4004d0 0xa 0x4004da refptr 0x400500 (-4) - 0x4004da 0x22 ​​​​​​​

Python24 机器学习之决策树

1.什么是机器学习&#xff1f; 机器学习是人工智能&#xff08;AI&#xff09;的一个分支&#xff0c;它使计算机系统能够从经验中学习并根据这些学习的数据做出决策或预测&#xff0c;而无需进行明确的编程。简而言之&#xff0c;机器学习涉及算法和统计模型的使用&#xff0…

Hugo Barra对Apple Vision Pro 硬件和软件的详细评述

原文&#xff1a;hugo.blog/2024/03/11/vision-pro 这篇文章的作者是Hugo Barra。Hugo Barra曾是Meta公司&#xff08;前身为Facebook&#xff09;旗下Oculus VR/AR团队的负责人。他在2017年至2020年期间领导了Oculus的团队&#xff0c;参与了多个VR头显的开发和发布。Hugo Bar…

使用提示词调教AI

“AI 是我们的数字员工&#xff0c;了解员工的秉性 &#xff0c; 从调教提示词开始。” 网上流传最广的提示词方法论&#xff0c;是“你需要给大模型一个角色”。这确实是一个好的策略&#xff0c;因为小学老师&#xff0c;大学老师这样的角色&#xff0c;预设很多背景信息。这…

【数学建模】 函数极值与规划模型

文章目录 函数极值与规划模型1. 线性代数和线性规划的联系1.1 线性代数的基本概念1.2 线性规划的基本概念1.3 线性代数与线性规划的联系矩阵和向量线性方程组单纯形法内点法凸优化 1.4 例子 2. Numpy有关矩阵运算示例2.1 矩阵的创建2.2 矩阵的基本运算2.3 矩阵的合并2.4 矩阵的…

Linux系统之nice命令的基本使用

Linux系统之nice命令的基本使用 一、nice命令介绍1.1 nice命令简介1.2 进程优先级介绍 二、nice命令基本语法2.1 nice命令的help帮助信息2.2 nice命令选项解释 三、nice命令的基本使用3.1 查看进程优先级3.2 使用nice启动进程3.3 提高优先级 四、注意事项 一、nice命令介绍 1.…

如何制作自己的网站

制作自己的网站可以帮助个人或组织在互联网上展示自己的品牌、作品、产品或服务。随着技术的发展&#xff0c;现在制作网站变得越来越简单。下面是一个简单的步骤指南&#xff0c;帮助你制作自己的网站。 1. 确定你的网站需求和目标 在开始之前&#xff0c;你需要明确你的网站的…

CSS Grid网格布局

一、前言 二、Grid布局 1、基本介绍 2、核心概念 &#xff08;1&#xff09;网格容器 &#xff08;2&#xff09;网格元素 &#xff08;3&#xff09;网格列 &#xff08;4&#xff09;网格行 &#xff08;5&#xff09;网格间距 &#xff08;6&#xff09;网格线 三…

基于PHP的酒店管理系统(改进版)

有需要请加文章底部Q哦 可远程调试 基于PHP的酒店管理系统(改进版) 一 介绍 此酒店管理系统(改进版)基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端jquery插件美化。系统角色分为用户和管理员。系统在原有基础上增加了注册登录注销功能&#xff0c;增加预订房间图片…

Claude走向开放

Claude的愿景一直是创建能够与人们协同工作并显著提升他们工作流程的人工智能系统。朝着这一方向迈进&#xff0c;Claude.ai的专业版和团队版用户现在可以将他们的聊天组织到项目中&#xff0c;将精选的知识和聊天活动整合到一个地方&#xff0c;并且可以让团队成员查看他们与C…

什么是期货基金?

期货基金&#xff0c;是指广大投资者将资金集中起来&#xff0c;委托给专业的期货投资机构&#xff0c;并通过商品交易顾问进行期货投资交易&#xff0c;投资者承担投资风险并享有投资利润的一种集合投资方式。期货基金的投资对象主要有两大类商品&#xff1a;期货与金融期货。…

django学习入门系列之第三点《案例 商品推荐部分》

文章目录 划分区域搭建骨架完整代码小结往期回顾 划分区域 搭建骨架 /*商品图片&#xff0c;父级设置*/ .slider .sd-img{display: block;width: 1226px;height: 460px; }<!-- 商品推荐部分 --> <!--搭建出一个骨架--> <div class"slider"><di…