vue--富文本插件Quill(二)图片与视频上传

2023-11-13

前言

  • 前言
    上文介绍了quill的基础使用,这里主要针对我们不想以图片base64文本格式提交,而是上传服务器获取图片url,以url提交的实现方式以及视频上传的实现
  • 思路
    1、隐藏一个input框,使用quill的handler事件实现点击上传到服务器
    这种方式可以参考作者再见紫罗兰https://www.cnblogs.com/linxiyue/p/10305047.html
    2、由于项目使用饿了么,所以我直接使用其提供的upload组件和Quill自定义定制组合实现上传图片和视频的功能
    两个思路方法一直,都可以实现

上传图片

  • quill基础参数插件
import Quill from "quill";
import {
   quillRedefine} from 'vue-quill-editor-upload'
import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";

components:{
    quillRedefine },

options: {
   
       theme: "snow",
       bounds: document.body,
       debug: "warn",
       modules: {
   
         // 工具栏配置
         toolbar: {
   
           container:[
             ["bold", "italic", "underline", "strike"],       // 加粗 斜体 下划线 删除线
             ["blockquote", "code-block"],                    // 引用  代码块
             [{
    list: "ordered" }, {
    list: "bullet" }],       // 有序、无序列表
             [{
    indent: "-1" }, {
    indent: "+1" }],            // 缩进
             [{
    size: ["small", false, "large", "huge"] }],   // 字体大小
             [{
    header: [1, 2, 3, 4, 5, 6, false] }],         // 标题
             [{
    color: [] }, {
    background: [] }],             // 字体颜色、字体背景颜色
             [{
    align: [] }],                                 // 对齐方式
             ["clean"],                                       // 清除文本格式
             ["link", "image", "video"],                       // 链接、图片、视频
           ]
        },
       },
       placeholder: "请输入内容",
       readOnly: false,
       lenIndex: 0 // 索引
     },
  • 上传准备
//auth.js
export function getToken() {
   
 return Cookies.get(TokenKey)
}
1、引入token
import { getToken } from "@/utils/auth";
2、上传参数
     upload: {
       // 设置上传的请求头部
       headers: { Authorization: "Bearer " + getToken() },
       // 上传的地址
       url: process.env.VUE_APP_BASE_API + "/file?type=1"
     },
  • 上传图片
	<div
    	class="editor"
    	ref="editor"
    	@focus="onEditorFocus($event)"
    	@change="onEditorChange($event)"
    	:style="styles">
	</div>
   <el-upload
         class="uploadder-ed"
         name="file"
         :headers="upload.headers"
         :action="upload.url"
         :show-file-list="false"
         :on-success="handleFileSuccess"
         >
     </el-upload>
   
 解释:
 @focus="onEditorFocus($event)"  获取焦点事件
 @change="onEditorChange($event)"// 内容改变事件
:on-success="handleFileSuccess"// 文件上传成功执行函数
// 获得焦点事件
    onEditorFocus(e){
    this.lenIndex = e.getSelection().index; },
    // 内容改变事件
    onEditorChange(e){
    this.lenIndex = e.quill.getSelection().index; },
    // 文件上传成功处理
  • 为image添加handler,点击时上传图片:
// option下添加handlers
handlers: {
   
   'image': function (value) {
   
       if (value) {
   
           // 触发input框选择图片文件
           document.querySelector('.uploadder-ed input').click()
       } else {
   
           this.quill.format('image', false);
       }
   },
 }
  • el-upload执行handleFileSuccess将地址插入到编辑器中:
// methods下封装上传函数
    handleFileSuccess(response, file, fileList) {
   
      if (response.code == 200) {
   
        this.Quill.insertEmbed(this.lenIndex, 'image', response.data.url); // 创建img标签
        this.Quill.setSelection(this.lenIndex + 1)
      }
    },

上传视频

同样步骤
upload组件
<el-upload
          class="upload-demo"
          name="file"
          :headers="upload.headers"
          :action="upload.url"
          :show-file-list="false"
          :on-success="handleFileSuccess1"
          >
      </el-upload>
option下handlers里面添加
'video': function (value) {
   
       if (value) {
   
            // 触发input框选择图片文件
            document.querySelector('.upload-demo input').cl
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue--富文本插件Quill(二)图片与视频上传 的相关文章

随机推荐

  • 微信订阅号和公众号的区别

    第一 定位不同 订阅号为用户提供信息和资讯 服务号主要为用户提供服务 第二 群发信息量不同 订阅号每天 24小时内 可以发送1条群发消息 最新公众平台 服务号1个月 30天 内仅可以发送4条群发消息 第三 用户收到信息提醒方式不同 群发信息
  • Golang如何配置国内镜像

    1 打开国内镜像官网 GOPROXY IO 一个全球代理 为 Go 模块而生 2 您只需通过简单设置 PowerShell Windows 配置 GOPROXY 环境变量 env GOPROXY https goproxy io direc
  • Django 快速搭建博客 第六节

    上节我们用模板弄出来第一个hello world 这节课 我们把数据库里面真正的数据跟单篇文章的详情页显示出来 一 模板的下载 这里的模板下载指的是 下载js和css文件 一个网站想要变得漂亮 变得可以稍微好看点 这里我们使用是bootst
  • vue 使用nuxt创建工程

    1 按回车确定项目名称 2 选择语法 3 选择npm 4 选择框架 5 选择请求方式 6 7 8 9 10 11 回车 12 显示下面提示则创建成功 13
  • 数字电路与系统学习笔记(戚金清)

    第一章 数字逻辑基础 1 1模拟信号 模拟电路 数字信号 数字电路 连续变化的物理量是模拟量 表示模拟量的信号是模拟信号 字符数量无限 离散变化的物理量是数字量 表示数字量的信号是数字信号 字符数量有限 构成模拟电路的元件是电子管 模拟计算
  • stm32F4修改时钟频率,更换为8MHz晶振

    stm32F4修改时钟的方法和stm32F103修改时钟的方法不大一样 毕竟库都换了嘛 一个F1的库一个F4的库 而且F1的库默认晶振时钟就是8MHz 大多数开发板也用的8MHz时钟 给我们提供了很多的方便 F1的库关于PLL的写法也很直观
  • access_token

    access token是公众号的全局唯一接口调用凭据 公众号调用各接口时都需使用access token 开发者需要进行妥善保存 access token的存储至少要保留512个字符空间 access token的有效期目前为2个小时 需
  • 【Maven】jar包冲突原因与最优解决方案

    Maven jar包冲突原因与最优解决方案 文章目录 前言 jar包冲突原因 依赖传递 冲突原因 jar包冲突解决方案 Maven默认处理策略 排除依赖 版本锁定 maven shade plugin插件 总结 前言 你是否经常遇到这样的报
  • 机械革命Z2如何Ubuntu安装

    机械革命Z2如何Ubuntu安装 准备 一个4G大的U盘下载了Ubuntu系统 1 首先要进入BIOS F2 关闭Security Boot 设置U盘启动第一启动顺序 2 这个时候将选项移动到此处不要按回车 按E 3 此时 进入编辑模式 大
  • 史上最难HelloWorld

    文章目录 Tomcat Servlet 创建一个项目 引入依赖 创建目录 编写代码 打包 部署 验证 优化一下打包和部署 Smart Tomcat Servlet常见的问题 Tomcat Tomcat就是一个HTTP服务器 HTTP协议是前
  • 语音识别-信号处理篇

    我的书 淘宝购买链接 当当购买链接 京东购买链接 连接前端和后端的语音识别 ASR 的关键是给到后端 根据特征判定词 句 系统的特征类型和特征质量 对于传统的语音识别系统常采用MFCC mel frequency ceptral coeff
  • flutter图片点击跳转_Flutter系列之Platform Channel使用详解

    PS 逐渐体会到关键少数原则的重要性 接下来就是付诸实践了 另外科创50ETF明天开始限额销售 可以适当关注或入手一点 前面几篇文章介绍了 Navigator 组件 Flex 布局 图片加载 Widget 生命周期 混合开发等 Flutte
  • Linux基础教程之/dev/null和/dev/zero的区别及其用法

    在Linux操作系统中 dev null和 dev zero是两个相似却又很特殊的文件 特别是在shell脚本开发和系统运维过程中会经常用这两个文件 因此作为Linux系统工程师 必须了解这两个文件的区别和用法 一 dev null的用法
  • 如何设计一个自动化测试框架?一文从4个点带你梳理一个正确的思路

    在进行自动化框架设计之前我们先来看两个问题 什么是自动化框架 设计的时候应该注意什么原则 然后该怎么做 本文会以一个web端的UI自动化测试框架设计为例 什么是自动化测试框架 什么是框架 特指为解决一个开放性问题而设计的具有一定约束性的支撑
  • QDIALOG 窗口级别模态

    这篇文章内容主要来自 QtQuarterly30 里面的 New Ways of Using QDialog 介绍的是使用QDialog open 这个函数是Qt 4 5 引入的 而不是传统的exec 来实现一个窗口级别的模态对话框 所谓模
  • 一键部署容器化版本,助力开发者快速试用WeDataSphere开源大数据平台套件

    一 部署WeDataSphere开源大数据平台的难点 您是否为搭建包含Hadoop Hive Spark等基础计算存储引擎的WeDataSphere 以下简称WDS 开源大数据平台套件而烦恼 是否希望能有一种简单快捷的方式来完成所有组件的部
  • 王道408计算机网络手写笔记 - 第六章 -应用层

    概览 6 1 网络应用模型 C S模型与P2P模型 1 6 2 域名系统DNS 层次域名 2 域名解析 3 6 3 文件传输协议FTP 4 6 34 电子邮件 MIME 5 SMTP POP3 IMAP 6 6 5 万维网WWW HTTP
  • jmeter对百度首页进行压力测试

    第一次测试 准备工作 在测试计划下添加jp gc Stepping Thread Group 阶梯线程组配置如下 该测试一共启动500个线程 每30秒增加10个 全部线程启动后 保持2分钟 然后每1秒停止5个线程 添加HTTP请求 添加查看
  • matlab:快速傅里叶(反)变换 FFT&IFFT

    文章目录 前言 一 傅里叶变换的离散性与周期性 二 MATLAB 实现快速傅里叶变换 FFT DFT 的计算 三 FFT 频谱的对称性 四 FFT 频谱的频率刻度 五 频谱图的绘制 半谱图 全谱图 六 练习 绘制cos信号的频谱图 半谱图
  • vue--富文本插件Quill(二)图片与视频上传

    前言 前言 上文介绍了quill的基础使用 这里主要针对我们不想以图片base64文本格式提交 而是上传服务器获取图片url 以url提交的实现方式以及视频上传的实现 思路 1 隐藏一个input框 使用quill的handler事件实现点