vue-quill-editor富文本组件二次封装,上传图片是base64的图片回显异常,进行自定义上传

<template><div><QuillEditor ref="myQuillEditor" theme="snow" :content="modelValue" :options="data.editorOption" contentType="html" @update:content="setValue" /><!-- 使用自定义图片上传 --><input type="file" hidden accept=".jpg,.png" ref="fileBtn" @change="handleUpload" /></div>
</template>

下面为示例代码: 

<script setup>
import { QuillEditor, Quill } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css'
import { ImageDrop } from 'quill-image-drop-module';
// import * as imageResize from 'quill-image-resize-module';
// import imageResize from 'quill-image-resize-module';Quill.register('modules/ImageDrop', ImageDrop);
// Quill.register('modules/imageResize', imageResize);
// Quill.register('modules/imageResize', imageResize);
import { reactive, onMounted, ref, toRaw, watch } from 'vue'
import { client } from "@sxbettem/bettem-micro-utils";const props = defineProps(['modelValue'])
const emit = defineEmits(['update:modelValue'])
const myQuillEditor = ref()
const fileBtn = ref()
const toolbarOptions = [// 加粗 斜体 下划线 删除线 -----['bold', 'italic', 'underline', 'strike']['bold', 'italic', 'underline', 'strike'],// 引用  代码块-----['blockquote', 'code-block']// ['blockquote', 'code-block'],// 1、2 级标题-----[{ header: 1 }, { header: 2 }][{ header: 1 }, { header: 2 }],// 有序、无序列表-----[{ list: 'ordered' }, { list: 'bullet' }][{ list: 'ordered' }, { list: 'bullet' }],// 上标/下标-----[{ script: 'sub' }, { script: 'super' }]// [{ script: 'sub' }, { script: 'super' }],// 缩进-----[{ indent: '-1' }, { indent: '+1' }][{ indent: '-1' }, { indent: '+1' }],// 文本方向-----[{'direction': 'rtl'}]// [{ direction: 'rtl' }],// 字体大小-----[{ size: ['small', false, 'large', 'huge'] }]// [{ size: ['small', false, 'large', 'huge'] }],// 标题-----[{ header: [1, 2, 3, 4, 5, 6, false] }]// [{ header: [1, 2, 3, 4, 5, 6, false] }],// 字体颜色、字体背景颜色-----[{ color: [] }, { background: [] }][{ color: [] }, { background: [] }],// 字体种类-----[{ font: [] }]// [{ font: [] }],// 对齐方式-----[{ align: [] }][{ align: [] }],// 清除文本格式-----['clean']['clean'],// 链接、图片、视频-----['link', 'image', 'video'][ 'image' ],// ['table'] // 表格
]
const data = reactive({content: '',editorOption: {modules: {toolbar: {container: toolbarOptions,handlers: {'image': function (value) {if (value) {fileBtn.value.click()} else {this.quill.format('image', false);}}}},ImageDrop: true,},placeholder: '请输入内容...'}
})
const setValue = (val) => {emit('update:modelValue', val)
}
const handleUpload = (e) => {const files = Array.prototype.slice.call(e.target.files)if (!files) {return}const formdata = new FormData()formdata.append('file', files[0])//url为自定义的上传地址client.upload('url...', {type: "szxcApp"}, files[0]).then(res => {if (res.url) {const quill = toRaw(myQuillEditor.value).getQuill()const length = quill.getSelection().index// 插入图片,res为服务器返回的图片链接地址quill.insertEmbed(length, 'image', res.url)// 调整光标到最后quill.setSelection(length + 1)}})
}
</script>

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

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

相关文章

关于一次开源java spring快速开发平台项目RuoYi部署的记录

关于一次开源java spring快速开发平台项目RuoYi部署的记录 本次因为需要一些练习环境&#xff0c;想要快速搭建一个javaweb 项目作为练习环境&#xff0c;经过查询和实验找到一个文档详细&#xff0c;搭建简单&#xff0c;架构也相对比较新的开源项目RuoYi。 项目介绍&#xf…

Quartus+Nios II for eclipse问题合集

由于对于FPGANIOS II 的工作需要&#xff0c;对工作过程中遇到的问题进行记录&#xff0c;持续更新。 1、BSP directory does not exist: . Stop.Nios II使用过程中遇到的一些问题2_error executing nios2-bsp-generate-files --bsp-di-CSDN博客https://blog.csdn.net/qq_39485…

「OpenCV交叉编译」ubuntu to arm64

Ubuntu x86_64 交叉编译OpenCV 为 arm64OpenCV4.5.5、cmake version 3.16.3交叉编译器 gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu 可在arm或linaro官网下载所需版本&#xff0c;本文的交叉编译器可点击链接跳转下载 Downloads | GNU-A Downloads – Arm Developer L…

Vue通用组件设计原则

在 Vue.js 开发中&#xff0c;设计通用组件是一项重要的任务&#xff0c;可以提升代码的复用性和可维护性。以下是通用组件设计的主要原则和最佳实践&#xff1a; 1. 清晰的职责划分 通用组件应该具有单一的职责&#xff0c;专注于完成某一类特定功能&#xff0c;而不依赖具体…

基于深度学习的点云分割网络及点云分割数据集

点云分割是根据空间、几何和纹理等特征对点云进行划分&#xff0c;使得同一划分内的点云拥有相似的特征。点云的有效分割是许多应用的前提&#xff0c;例如在三维重建领域&#xff0c;需要对场景内的物体首先进行分类处理&#xff0c;然后才能进行后期的识别和重建。 传统的点…

Excel - VLOOKUP函数将指定列替换为字典值

背景&#xff1a;在根据各种复杂的口径导出报表数据时&#xff0c;因为关联的表较多、数据量较大&#xff0c;一行数据往往会存在三个以上的字典数据。 为了保证导出数据的效率&#xff0c;博主选择了导出字典code值后&#xff0c;在Excel中处理匹配字典值。在查询百度之后&am…

硬件知识 cadence16.6 原理图输出为pdf 网络名下划线偏移 (ORCAD)

1. cadence原理图输出为PDF网络名下划线偏移 生这种情况的原因 1. 设计的原理图图纸大小比正常的 A4图纸大。 2. 打印为PDF 的时候&#xff0c;打印机的设置有问题。 2.cadence原理图输出为 PDF网络名下划线偏移的情况 可以看到上图&#xff0c;网络名往上漂移。 3. 解决办法 …

华为机试HJ58 输入n个整数,输出其中最小的k个

首先看一下题 描述 输入n个整数&#xff0c;找出其中最小的k个整数并按升序输出 本题有多组输入样例 数据范围&#xff1a; 1≤n≤1000 &#xff0c;输入的整数满足 1≤val≤10000 输入描述&#xff1a; 第一行输入两个整数n和k 第二行输入一个整数数组 输出描述&#xff1…

【视觉SLAM】4b-特征点法估计相机运动之PnP 3D-2D

文章目录 0. 前言1. PnP求解1.1 直接线性变换DLT1.2 P3P1.3 光束平差法BA2. 实现0. 前言 透视n点(Perspective-n-Point,PnP)问题是计算机视觉领域的经典问题,用于求解3D-2D的点运动。换句话说,当知道 N N N个世界坐标系中3D空间点的坐标以及它们在图像上的投影点像素坐标…

随机森林(Random Forest)详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

对原jar包解压后修改原class文件后重新打包为jar

文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class&#xff08;不好用-不推荐直接跳过&#xff09;提醒 参考资料-推荐阅读拓…

PyQt6+pyqtgraph折线图绘制显示

1、实现效果 2、环境&#xff1a; 确认已经安装pyqtgraph的模块&#xff0c;如果没有安装&#xff0c;使用命令安装&#xff1a; pip install pyqtgraph 3、代码实现&#xff1a; 绘制折线函数&#xff1a; import sys import random from PySide6.QtWidgets import QAppl…

Altium Designer学习笔记 1-5 工程创建_元件库创建

基于Altium Designer 23学习版&#xff0c;四层板智能小车PCB 目录 1、工程组成 2、AD工程创建 3、元件库的阻容模型创建 4、IC类的元件库模型创建 5、排针类的元件库模型创建 1、工程组成 主要包括原理图库----原理图----PCB库----PCB 2、AD工程创建 新建工程项目 …

java SQL中使用for update作用和用法

在 Java 开发中&#xff0c;使用 FOR UPDATE 子句的 SQL 查询主要用于实现行级锁定&#xff0c;以确保在事务处理过程中数据的一致性和完整性。FOR UPDATE 通常在以下情况下使用&#xff1a; 1. 行级锁定 FOR UPDATE 会锁定查询结果集中涉及的行&#xff0c;防止其他事务在同一…

C++:operator new/delete函数

每个类默认都会有一个全局范围的 operator new 和 operator delete 接口&#xff0c;它们是由标准库提供的&#xff0c;可以用于动态内存分配和释放。如果一个类没有显式定义自己的 operator new 或 operator delete&#xff0c;默认的全局版本会被使用。 默认 operator new 的…

Video Duplicate Finder 快速识别并去除重复的视频和图像!

文章目录 下载 后续升级 Video Duplicate Finder&#xff08;视频重复查找器&#xff09;是一款开源的跨平台视频&#xff08;以及图像&#xff09;去重软件&#xff0c;通过对比文件内容和特征&#xff0c;快速识别出重复的视频和图像文件&#xff0c;即使是被压缩裁剪过、…

力扣力扣力:860柠檬水找零

860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 需要注意的是&#xff0c;我们一开始是没有任何钱的&#xff0c;也就是说我们需要拿着顾客的钱去找零。如果第一位顾客上来就是要找零那么我们无法完成&#xff0c;只能返回false。 分析&#xff1a; 上来我们先不分…

字符串与十六进制表示的字符串相互转换字符串倒序

字符串转为十六进制表示的字符串: /// <summary> /// 此方法用于将普通字符串转换成16进制的字符串。 /// </summary> /// <param name"_str">要转换的字符串。</param> /// <returns></returns&g…

开源许可协议

何同学推动了开源协议的认识&#xff0c;功不可没&#xff0c;第一次对开源有了清晰的认识&#xff0c;最宽松的MIT开源协议 源自OSC开源社区&#xff1a;何同学使用开源软件“翻车”&#xff0c;都别吵了&#xff01;扯什么违反MIT

装饰器---python

一、柯里化 概念&#xff1a;将原来接受两个参数的函数变成新的接受一个参数的函数过程&#xff0c;新的函数返回一个以原有第二个参数为参数的函数 例如&#xff1a; 例一 原函数是add(x,y),柯里化的目标是add(x)(y),如何实现呢&#xff1f; 相当于嵌套函数&#xff0c;有闭…