解决quill-image-drop-module拖拽上传显示2张图片问题

作者:Kinglong    发表时间:2023-02-08 04:42   

关键词:quill-image-drop-module  重复插入图片  

业务场景说明:

vue3中使用vue-quill、quill-image-extend-module结合图片上传实现了quill-editor插入图片功能。

期望通过引用quill-image-drop-module插件,拖拽图片到编辑器,实现图片上传并插入到编辑器中。

1.插件的使用

安装插件依赖包
npm install quill-image-drop-module  -S 

页面使用

// 图片拖拽上传
import { ImageDrop } from 'quill-image-drop-module'; // 拖动加载图片组件。
Quill.register('modules/imageDrop', ImageDrop)

2.问题描述

拖拽图片到编辑器后,实现了图片上传并插入到编辑器。但同时又自动往编辑器插入了一张base64的图片。导致编辑器中显示两张图片。

3.问题定位

分析源码,怀疑是readFiles方法中callback的执行导致了base64图片的插入。

4.解决方案

(1)将node_modules下quill-image-drop-module模块的index.js拷贝一份到项目的utils目录下,重命名为imageDrop.js。

    将88行的callback(evt.target.result);注释。如下: 

(2)修改页面的引用,改成从/utils/imageDrop.js引用ImageDrop 

// 图片拖拽上传
// import { ImageDrop } from 'quill-image-drop-module'; // 拖动加载图片组件。
import { ImageDrop } from '@/utils/imageDrop.js'; // 拖动加载图片组件。
Quill.register('modules/imageDrop', ImageDrop)

    以上,问题解决。