vue-quill-editor上传图片base64转化为img标签

vue-quill-editor传图片的话默认把图片转成了base64,会导致我们的参数特别大,不好渲染

基于vue-quill-editor重写一个quill-editor组件

<template><div><quilleditorv-model="content"ref="myTextEditor":options="editorOption"@blur="onEditorBlur($event)"@focus="onEditorFocus($event)"@change="onEditorChange($event)"><div id="toolbar" slot="toolbar"><select class="ql-size"><option value="small"></option><!-- Note a missing, thus falsy value, is used to reset to default --><option selected></option><option value="large"></option><option value="huge"></option></select><!-- Add subscript and superscript buttons --><span class="ql-formats"><button class="ql-script" value="sub"></button></span><span class="ql-formats"><button class="ql-script" value="super"></button></span><span class="ql-formats"><select class="ql-color"><option selected="selected"></option><option value="#e60000"></option><option value="#ff9900"></option><option value="#ffff00"></option><option value="#008a00"></option><option value="#0066cc"></option><option value="#9933ff"></option><option value="#ffffff"></option><option value="#facccc"></option><option value="#ffebcc"></option><option value="#ffffcc"></option><option value="#cce8cc"></option><option value="#cce0f5"></option><option value="#ebd6ff"></option><option value="#bbbbbb"></option><option value="#f06666"></option><option value="#ffc266"></option><option value="#ffff66"></option><option value="#66b966"></option><option value="#66a3e0"></option><option value="#c285ff"></option><option value="#888888"></option><option value="#a10000"></option><option value="#b26b00"></option><option value="#b2b200"></option><option value="#006100"></option><option value="#0047b2"></option><option value="#6b24b2"></option><option value="#444444"></option><option value="#5c0000"></option><option value="#663d00"></option><option value="#666600"></option><option value="#003700"></option><option value="#002966"></option><option value="#3d1466"></option></select></span><span class="ql-formats"><select class="ql-background"><option value="#000000"></option><option value="#e60000"></option><option value="#ff9900"></option><option value="#ffff00"></option><option value="#008a00"></option><option value="#0066cc"></option><option value="#9933ff"></option><option selected="selected"></option><option value="#facccc"></option><option value="#ffebcc"></option><option value="#ffffcc"></option><option value="#cce8cc"></option><option value="#cce0f5"></option><option value="#ebd6ff"></option><option value="#bbbbbb"></option><option value="#f06666"></option><option value="#ffc266"></option><option value="#ffff66"></option><option value="#66b966"></option><option value="#66a3e0"></option><option value="#c285ff"></option><option value="#888888"></option><option value="#a10000"></option><option value="#b26b00"></option><option value="#b2b200"></option><option value="#006100"></option><option value="#0047b2"></option><option value="#6b24b2"></option><option value="#444444"></option><option value="#5c0000"></option><option value="#663d00"></option><option value="#666600"></option><option value="#003700"></option><option value="#002966"></option><option value="#3d1466"></option></select></span><span class="ql-formats"><button type="button" class="ql-bold"></button></span><span class="ql-formats"><button type="button" class="ql-italic"></button></span><span class="ql-formats"><button type="button" class="ql-underline"></button></span><span class="ql-formats"><button type="button" class="ql-blockquote"></button></span><span class="ql-formats"><button type="button" class="ql-list" value="ordered"></button></span><span class="ql-formats"><button type="button" class="ql-list" value="bullet"></button></span><span class="ql-formats"><button type="button" class="ql-link"></button></span><span class="ql-formats"><button type="button" @click="imgClick" style="outline: none"><svg viewBox="0 0 18 18"><rect class="ql-stroke" height="10" width="12" x="3" y="4"></rect><circle class="ql-fill" cx="6" cy="7" r="1"></circle><polylineclass="ql-even ql-fill"points="5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12"></polyline></svg></button></span><span class="ql-formats"><button type="button" class="ql-video"></button></span></div></quilleditor></div>
</template>
<script>
import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";
import oss from "@/utils/oss";
import { quillEditor } from "vue-quill-editor";export default {name: "v-editor",props: {value: {type: String,},/*上传图片的地址*/uploadUrl: {type: String,default: "/",},/*上传图片的file控件name*/fileName: {type: String,default: "file",},maxUploadSize: {type: Number,default: 1024 * 1024 * 500,},},data() {return {content: "",editorOption: {modules: {toolbar: "#toolbar",},},};},computed: {editor() {return this.$refs.myTextEditor.quill;},},components: {quilleditor: quillEditor,},mounted() {this.content = this.value;},watch: {value(newVal, oldVal) {if (this.editor) {if (newVal !== this.content) {this.content = newVal;}}},},methods: {onEditorBlur() {//失去焦点事件//console.log('失去焦点');},onEditorFocus() {//获得焦点事件//console.log('获得焦点事件');},onEditorChange() {//内容改变事件//console.log('内容改变事件');this.$emit("getcode", this.content);},/*点击上传图片按钮*/imgClick() {/*内存创建input file*/var input = document.createElement("input");input.type = "file";input.name = this.fileName;input.accept = "image/jpeg,image/png,image/jpg,image/gif";input.onchange = this.onFileChange;input.click();},/*选择上传图片切换*/onFileChange(e) {var fileInput = e.target;if (fileInput.files.length === 0) {return;}this.editor.focus();if (fileInput.files[0].size > 1024 * 1024 * 2) {this.$message.error("图片不能大于2M", "图片尺寸过大");}this.uploadFilePic(fileInput.files[0]);},//上传图片到服务器async uploadFilePic(imgSource) {const res = await oss.ossUploadFile(imgSource, "");setTimeout(() => {// //获取光标所在位置let length = this.editor.getSelection().index;this.editor.insertEmbed(length, "image", res.ossUrl);// //调整光标到最后this.editor.setSelection(length + 1);}, 1000);},},
};
</script>

使用

<quill-editor v-model="form.content" upload-url="/upload/image" file-name="file" class="myQuillEditor " @getcode="getcode" />getcode(e) {this.form.content = e},

form.content里面就是我们富文本框的内容

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

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

相关文章

在线图片转Base64图片的方法

html版(不包含跨域解决,输入在线图片地址即可转换) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

Cisco 思科路由交换网络设备 安全基线 安全加固操作

目录 账号管理、认证授权 本机认证和授权ELK-Cisco-01-01-01 设置特权口令 ELK-Cisco-01-02-01 ELK-Cisco-01-02-02 ​​​​​​​登录要求 ELK-Cisco-01-03-01 ​​​​​​​ELK-Cisco-01-03-02 ELK-Cisco-01-03-03 日志配置 ELK-Cisco-02-01-01 通信协议 ELK-Cisco-…

软考高级信息系统项目管理师经验分享

考了三次终于考过了。 第一次&#xff0c;没准备&#xff0c;打酱油。 第二次&#xff0c;不舍得花钱&#xff0c;自己复习&#xff0c;结果教材改版了都不知道。 第三次&#xff0c;改机考了。 总结一下这三次的经验&#xff1a; 一、不是学霸型的一定要报班 报班的优点&…

实时动作识别学习笔记

目录 yowo v2 yowof 判断是在干什么,不能获取细节信息 yowo v2 https://github.com/yjh0410/YOWOv2/blob/master/README_CN.md ModelClipmAPFPSweightYOWOv2-Nano1612.640ckptYOWOv2-Tiny

【prometheus】入门+实习需求实战

prometheus官方教程 说明&#xff1a; 感冒了&#xff0c;写点总结不浪费时间&#xff0c;声明不会扯出来任何的私有代码&#xff0c;毕竟要保密&#xff0c;只会讲prometheus的官方有的&#xff0c;以及那些开源的代码方法&#xff0c;例如prometheus客户端代方法&#xff0…

QML中Dialog获取close与open状态

1.新建MyDialog.qml import QtQuick 2.15import QtQuick.Dialogs 1.2Dialog {id: rootvisible: falsetitle: qsTr("弹出对话框")width: 250height: 200} 2.main.qml中调用MyDialog import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15…

JS原生实现浏览器滚动条滚动侧边栏高亮响应

目录 演示 ​编辑 需求 代码 css html script 代码解释 1、获取所有link-content 2、定义一个rectContent数组&#xff0c;然后循环allContents调用getClientRects()[0]获取每个link-content元素与浏览器视口的关系 3、为数组追加link-content&#xff0c;用于设置侧…

软件设计师——面向对象技术(一)

&#x1f4d1;前言 本文主要是【面向对象技术】——软件设计师—面向对象技术的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#…

C++学习笔记(十一)

一、类和对象 C面向对象的三大特性为&#xff1a;封装、继承、多态 C认为万事万物皆为对象&#xff0c;对象上有其属性和行为 例如&#xff1a;人可以作为对象&#xff0c;属性有姓名、年龄、身高......&#xff0c;行为有走、吃、睡觉 车也可以作为对象&#xff0c;属性有轮…

官网IDM下载和安装的详细步骤

目录 一、IDM是什么 二、下载安装 三、解决下载超时的问题 四、谷歌浏览器打开IDM插件 谷歌浏览器下载官网&#x1f447; 五、测试 六、资源包获取 一、IDM是什么 IDM&#xff08;internet download manager&#xff09;是一个互联网下载工具插件&#xff0c;常见于用…

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 29 章:ChatGPT 插件

要求CHATGPT高质量回答的艺术&#xff1a;提示工程技术的完整指南—第 29 章&#xff1a;ChatGPT 插件 这是 ChatGPT 的另一个圣杯。它将彻底改变你使用 ChatGPT 的方式。ChatGPT 插件本质上是将 ChatGPT 的功能扩展到文本输出之外。它允许你上传图片、视频、音频和 CSV 文件&…

资深IT经理分享如何选择商用远控软件三:评估产品方案匹配度

作为企业必要的IT管理和远程办公工具&#xff0c;远程控制解决方案的挑选和采购是需要IT部门慎重考虑的。 对于具体如何在诸多产品中选择合适的商用远程控制解决方案&#xff0c;此前我们就分享了一位资深IT经理的相关经验&#xff0c;目前已经涵盖初期的业务需求调研&#xf…

【ESP32 IDF】ESP32移植u8g2库,实现oled界面显示

ESP32移植u8g2库&#xff0c;实现oled界面显示 1. 简单描述2. 环境准备1. 硬件准备2. 软件准备 3. IIC屏幕 【基于 ssd1362 256*64 】4. SPI屏幕 【基于 ssd1306 128*32】 1. 简单描述 开发方式为 IDF5.0参考连接为 iic基于esp-idf移植使用u8g2 spi基于esp-idf移植使用u8g2 …

探索创意无限的Photoshop CC 2020Mac/Win版

作为一款功能强大的图像处理软件&#xff0c;Photoshop CC 2020&#xff08;简称PS 2020&#xff09;在全球范围内备受设计师、摄影师和艺术家的喜爱和推崇。它不仅为用户提供了丰富多样的工具和功能&#xff0c;还不断推出新的创意特效和改进的功能&#xff0c;让用户的创意无…

【数据结构和算法】拥有最多糖果的孩子

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、复杂度分析 前言 这是力扣的1431题&#xff0c;难度为简单&#xff0c;解题方案有很多种&…

C# Solidworks二次开发:选择管理器相关的API介绍

今天在讲述主要内容之前&#xff0c;先说一个不太相关的问题。 我之前在其他文章中看到有一些朋友在问为什么获取到的点位数据需要乘以1000进行单位转换&#xff0c;其实原因是这样的&#xff0c;在所有使用的API中如果没有特殊说明&#xff0c;所有的长度单位都是米&#xff…

苹果Vision Pro即将量产

据界面新闻消息&#xff0c;苹果公司将在今年12月正式量产第一代MR&#xff08;混合现实&#xff09;产品Vision Pro。苹果公司对Vision Pro寄予了厚望&#xff0c;预计首批备货40万台左右&#xff0c;2024年的销量目标是100万台&#xff0c;第三年达到1000万台。 苹果的供应…

springboot + thymeleaf + layui 初尝试

一、背景 公司运营的同事有个任务&#xff0c;提供一个数据文件给我&#xff0c;然后从数据库中找出对应的加密串再导出来给他。这个活不算是很难&#xff0c;但时不时就会有需求。 同事给我的文件有时是给excel表格&#xff0c;每一行有4列&#xff0c;逗号隔开&#xff0c;…

编译和使用WPS-ghrsst-to-intermediate生成SST

一、下载 V1.0 https://github.com/bbrashers/WPS-ghrsst-to-intermediate/tree/masterV1.5&#xff08;使用过程报错&#xff0c;原因不详&#xff0c;能正常使用的麻烦告知一下方法&#xff09; https://github.com/dmitryale/WPS-ghrsst-to-intermediate二、修改makefile…

【CVE 复现】CVE-2022-0185 fsconfig之整数溢出

影响版本&#xff1a;Linux-v5.1~v5.16.2 测试版本&#xff1a;Linux-5.11.22&#xff0c;由于懒得搞环境&#xff0c;所以直接用的 bsauce 大佬提供的 测试环境 看看 patch&#xff1a; diff --git a/fs/fs_context.c b/fs/fs_context.c index b7e43a780a625b..24ce12f0db32…