vue-quill-editor富文本编辑器的使用(实现图片/文件上传)

2023-11-01

实现效果

文本编辑的三个功能分别是:添加链接,上传图片,上传文件
在这里插入图片描述

编辑器配置

基本配置

<template>
   <quill-editor class="editor" ref="QuillEditor" v-model="detail" :options="editorOption"></quill-editor>
</template>
<script>
// 编辑器工具栏配置
const toolbarOptions = [
  ['link', 'image', 'upload']
]
export default {
	data() {
	  detail: '',
	  editorOption: {
        modules: {
          toolbar: {
            container: toolbarOptions, // 工具栏
            handlers: {
              image: function(value) { //编辑器-上传图片
                if (value) {
                  // 调用antd图片上传upload
                  document.querySelector('.uploadImg .ant-upload .ant-btn').click()
                } else {
                  this.quill.format('image', false)
                }
              },
              upload: value => { //编辑器-上传文件
                if (value) {
                  document.querySelector('.uploadFile input').click()
                }
              }
            }
          }
        }
      }
	}
}
</script>

实现图片上传

想法:隐藏upload组件,当用户点击上传图片的icon时,触发upload的点击,调用上传图片接口,服务器返回图片地址后,添加到光标停留的地方

<!--携带了头部header参数token-->
 <a-upload
   name="img"
   :multiple="true"
   :showUploadList="false"
   :action="front"
   :headers="{Authorization: 'bearer ' + userInfo.token}" 
   class="uploadImg"
   style="display: none"
   @change="uploadImg"
 >
   <a-button>上传图片</a-button>
 </a-upload>
// 编辑器 - 上传图片
uploadImg(info) {
  let quill = this.$refs.QuillEditor.quill

  if (info.file.status === 'uploading') {
    return
  }
  if (info.file.status === 'done') {
    if (info.file.response.errno === 0) {
      // 获取光标所在位置
      let length = quill.getSelection().index
      // 插入图片,res为服务器返回的图片链接地址
      quill.insertEmbed(length, 'image', info.file.response.data)
      // 调整光标到最后
      quill.setSelection(length + 1)
    }
  }
}

实现文件上传

想法:同理,隐藏upload组件,当用户点击上传文件的icon时,触发upload的点击,调用上传文件接口,服务器返回文件地址后,添加到光标停留的地方;不过,这里要自定义一个文件的icon

import { Quill } from 'vue-quill-editor'
// 自定义插入a链接
var Link = Quill.import('formats/link')
class FileBlot extends Link {
  // 继承Link Blot
  static create(value) {
    let node = undefined
    if (value && !value.href) {
      // 适应原本的Link Blot
      node = super.create(value)
    } else {
      // 自定义Link Blot
      node = super.create(value.href)
      // node.setAttribute('download', value.innerText);  // 左键点击即下载
      node.innerText = value.innerText
      node.download = value.innerText
    }
    return node
  }
}
FileBlot.blotName = 'link'
FileBlot.tagName = 'A'
Quill.register(FileBlot)

注意这里 - 插入文件地址的方式

// 编辑器 - 上传文件
uploadFile(info) {
   let quill = this.$refs.QuillEditor.quill

   if (info.file.status === 'uploading') {
     return
   }
   if (info.file.status === 'done') {
     if (info.file.response.errno === 0) {
       // 获取光标所在位置
       let length = quill.getSelection().index
       // 插入文件,res为服务器返回的文件链接地址
       quill.insertEmbed(length, 'link', {href: info.file.response.data, innerText: info.file.name}) //**注意这里 - 插入文件地址的方式**
       // 调整光标到最后
       quill.setSelection(length + 1)
     }
   }
 }

最后的效果图:
在这里插入图片描述
点击文件链接,直接下载这个文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue-quill-editor富文本编辑器的使用(实现图片/文件上传) 的相关文章

  • 伯恩斯坦称多边形区块链是 Web3 之王

    这家华尔街公司的一份报告称 该项目从大型全球科技公司聘请了员工 并被星巴克和 Instagram 等许多大品牌使用 伯恩斯坦周五在一份研究报告中表示 Polygon 区块链已成为将 Web2 消费者转移到 Web3 的主要门户 该系统已被星
  • 3.1.4 Hadoop, Yarn, 资源调度, AH源码分析, 3.x 新特性概述, Job三原则, 调优(Shuffle, Job, YARN, NN Full GC), 二次开发环境搭建

    目录 第七部分 YARN资源调度 第 1 节 Yarn架构 第 2 节 Yarn任务提交 作机制 第 3 节 Yarn调度策略 第 4 节 Yarn多租户资源隔离配置 第 部分 Apache Hadoop HDFS核 源码剖析 第 1 节
  • 找不到msvcp120.dll和msvcr120.dll的问题

    win11系统安装mysql5 7版本遇到找不到msvcp120 dll和msvcr120 dll的问题 因为没有安装微软常用运行库合集64位导致的 进入微软下载中心https www microsoft com zh CN downloa
  • ExtJs 修改fieldLabel的值

    修改人员选择器的fieldLabel Ext getCmp selectTreeRyName2 fieldLabel 需求定义人 Ext getCmp selectTreeRyName fieldLabel 需求定义人
  • C++静态成员函数访问非静态成员变量的方法

    静态成员函数不能访问非静态成员 这是因为静态函数属于类而不是属于整个对象 静态函数中的 member可能都没有分配内存 静态成员函数没有隐含的this自变量 所以 它就无法访问自己类的非静态成员 但我们在一个class中要使用CreateT
  • CentOS Linux 8的yum源失效解决

    问题描述 CentOS Linux 8 yum源下载软件失败 yum update CentOS Linux 8 AppStream 14 B s 38 B 00 02 Error Failed to download metadata f
  • 大一python考试知识点_Python复习知识点(一)

    python简介 Python是一种解释型语言 Python使用缩进对齐组织代码执行 所以没有缩进的代码 都会在载入时自动执行 数据类型 整形 int 无限大 浮点型 float 小数 复数 complex 由实数和虚数组成 Python中
  • Unity3D-使用图层,锁定背景图片

    如题 添加场景背景图片 需要锁定背景图片 防止对背景进行误操作 1 选中背景图片 选择属性中的Layer 添加一个自定义图层 2 切换background背景图的layer为刚刚新建的 然后锁定新建的图层 防止在Scene布局中选中 这样在
  • Python之callable

    callable object return True if the object argument appears callable False if not 可以检查一个对象是否是可调用的 无论是直接调用或是通过apply 对于函数 方
  • 2023上岸华为od~经验分享

    说说我感觉中的华为OD吧 华为OD的面试流程包括机试 性格测试 HR面试 技术一面 技术二面和主管面试 我是一名非计算机专业 非应届生的211本科生 曾尝试跨考计算机但失败了 然而 我学习过 计算机组成原理 数据结构 操作系统 和 计算机网
  • numpy学习笔记

    1 numpy概述 1 Numerical Python 数值的Python 补充了Python语言所欠缺的数值计算能力 2 是其他数据分析及机器学习库的底层库 3 完全标准C语言实现 运行效率充分优化 4 开源免费2 numpy的核心 多
  • TDH中的Transporter

    本文主要介绍Transwarp的etl工具 Transporter 本文依托于星环的官方文档 通过一个简单的实例来让大家熟悉Transporter的使用 关注专栏 Transwarp系列 了解更多Transwarp的技术知识 目录 一 Tr

随机推荐

  • 【Qt】富文本处理简单介绍

    文章目录 Qt富文本处理 富文本文档结构 文本块QTextBlock 表格 列表 图片 查找功能 语法高亮与HTML 参考 Qt Creator快速入门 第三版 Qt富文本处理 富文本Rich Text 简单说就是在文档中可以使用多种格式
  • 基于javaweb+mysql的汽车租赁系统(java+SSM+JSP+LayUI+echarts+mysql)

    ssm汽车租赁系统 carRental 系统概要 汽车租赁系统总共分为两个大的模块 分别是系统模块和业务模块 其中系统模块和业务模块底下又有其子模块 功能模块 一 业务模块 1 客户管理 客户列表 客户分页和模糊查询 客户添加 修改 删除
  • 人工蜂群算法(ABC算法)

    为了解决多变量函数优化问题Karaboga在2005年提出了人工蜂群算法ABC模型 1 蜜蜂采蜜机理 蜜蜂是一种群居昆虫 虽然单个昆虫的行为极其简单 但是由单个简单的个体所组成的群体却表现出极其复杂的行为 真实的蜜蜂种群能够在任何环境下 以
  • WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】

    问题描述 本文解决俩个Docker报错 分别是 1 WSL 2 installation is incomplete 2 System InvalidOperationException Failed to set version to d
  • STM32F103驱动DHT11温湿度传感器(STM32MXcube,HAL)

    第一步 配置STM32MXbube S1 配置时钟模式为外部高速晶振 外部低速晶振 可选 S2 配置下载方式为SW ST LINK S3 配置定时器 用于延时us级别函数 S4 配置串口 用于输出数据 S5 配置GPIO S6 配置总线频率
  • python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file

    报错详情 python3 error while loading shared libraries libpython3 7m so 1 0 cannot open shared object file No such file or di
  • maven 多模块模板

    1 建立模板项目 settings demo core settings src main java com test core resources test java resources demo db settings src main
  • 前端基础5——UI框架Layui

    文章目录 一 基本使用 二 管理后台布局 2 1 导航栏 2 2 主题颜色 2 3 字体图标 三 栅格系统 四 卡片面板 五 面包屑 六 按钮 七 表单 八 上传文件 九 数据表格 9 1 table模块常用参数 9 2 创建表格 9 3
  • 用pyecharts画一个饼图

    pyecharts是一款Python的图表库 可以用来绘制各种类型的图表 包括饼图 下面是一个简单的例子 展示如何使用pyecharts来画一个饼图 首先 需要安装pyecharts pip install pyecharts i http
  • PAT乙级 1001 害死人不偿命的(3n+1)猜想 (15分)

    PAT乙级 1001 害死人不偿命的 3n 1 猜想 15分 卡拉兹 Callatz 猜想 对任何一个正整数 n 如果它是偶数 那么把它砍掉一半 如果它是奇数 那么把 3n 1 砍掉一半 这样一直反复砍下去 最后一定在某一步得到 n 1 卡
  • 由“智障”到“智能”到未来,从汽车AI语音交互看语言交互技术高山在哪?

    文 胡杨 胡皓 来源 智能相对论 ID aixdlun 今天天气怎么样 今日是晴天 气温17到22度 东北风3到4级 那周五呢 周五距今天还有2天 重复唤醒 答非所问 这不是人工智能 是 人工智障智障 这是大部分智能网联汽车用户对语音交互的
  • Hbase split的三种方式和split的过程

    Hbase split的三种方式和split的过程 在Hbase中split是一个很重要的功能 Hbase是通过把数据分配到一定数量的region来达到负载均衡的 一个table会被分配到一个或多个region中 这些region会被分配到
  • 基于Springboot + Mybatis-plus事务管理

    事务 事务就是为了保证多次数据库操作的原子性 举个简单的例子 买商品第一步要扣钱 第二步要扣库存 如果没有事务 一旦第一步与第二步之间出现了异常 那么钱是扣了 库存却没变 这显然不符合业务场景 要么都成功要嘛都失败 开启事务 在Spring
  • springboot和mybatis的整合—黑马上课学习笔记

    web开发的基础 运用的是BS架构 这种架构是一种浏览器 服务器模式 客户端只需要浏览器 而数据存储和逻辑都在服务端 HTTP协议 是一种超文本传输协议 规定了浏览器和服务器之间的规则 Web服务器 负责解析HTTP协议 解析请求数据 并发
  • python123.io---英文单词个数统计

    英文单词个数统计 类型 Python 函数和代码复用 给出一个字符串 s 内容参见 编程模板 请统计并打印字符串 s 中出现单词的个数 示例1
  • 时序预测

    时序预测 MATLAB实现DBN SVM深度置信网络结合支持向量机时间序列预测 多指标评价 目录 时序预测 MATLAB实现DBN SVM深度置信网络结合支持向量机时间序列预测 多指标评价 效果一览 基本描述 程序设计 参考资料 效果一览
  • 语义分割、实例分割

    在cv领域 会经常见到 语义分割 实例分割 这两个名词 本文就来解释下他们分别是什么意思 又有什么区别 以下的图部分借用自知乎用户william的文章 一文读懂语义分割与实例分割 知乎 目录 语义分割和实例分割 语义分割 实例分割 总结 语
  • 勒索病毒最新变种.halo勒索病毒来袭,如何恢复受感染的数据?

    摘要 halo勒索病毒已成为数字世界中的威胁 通过高级加密技术将文件锁定 并要求支付赎金 本文91数据恢复将深入介绍 halo勒索病毒的工作原理 提供解锁被感染文件的方法 以及探讨如何有效预防这一威胁 如果您正在经历勒索病毒数据恢复的困境
  • android CoordinatorLayout使用

    http blog csdn net xyz lmn article details 48055919 一 CoordinatorLayout有什么作用 CoordinatorLayout作为 super powered FrameLayo
  • vue-quill-editor富文本编辑器的使用(实现图片/文件上传)

    目录 实现效果 编辑器配置 基本配置 实现图片上传 实现文件上传 实现效果 文本编辑的三个功能分别是 添加链接 上传图片 上传文件 编辑器配置 基本配置