quill-editor实现自定义上传视频和图片到服务器。quill-image-resize-module的实现图片的缩放,以及在小程序和uni-app富文本解析的解决方案

最近在用uni-app写跨端的小程序APP应用。其中有富文本的需求,后台使用的vue-cli3+elementUI。vue做技术栈的话还是选择quill-editor比较多。

quill-editor上传图片和视频到服务器

quill-editor默认的图片是base64文件,一般来说,我们都需要保存至自己的服务器或者OSS。

quill-editor上传到服务器的关键是对quill-editor的图片和视频点击事件的劫持,劫持之后自定义一个上传的方法。基本配置在这里就不多做记录。可以按照需求查看文档或者百度。

editorOption: {
          theme: "snow", // or 'bubble'
          placeholder: "",
          modules: {
            imageResize: {},
            toolbar: {
              container: toolbarOptions,
              // container: "#toolbar",
              handlers: {
                //拦截默认的上传方式
                image: function(value) {
                    //当点击图片上传时,value会变为true
                  if (value) {
                    // 触发自定义的上传
                    document.querySelector(".avatar-uploader input").click();
                  } else {
                    this.quill.format("image", false);
                  }
                },
               video: function(value) {
                     //当点击视频上传时,value会变为true
                  if (value) {
                     // 触发上传
                    document.querySelector(".video-uploader input").click();
                  } else {
                    this.quill.format("video",false);
                  }
                },
              }
            }
          }
        },

文件上传的方法在这里就不做过多解释。下面说一下如何将上传之后的文件,插入到富文本中

uploadSuccessVideo(res,file){
        // res为文件服务器返回的数据
        // 获取富文本组件实例
        let quill = this.$refs.myQuillEditor.quill;
        // 如果上传成功
        if (res.code === 200) {
          // 使用getSelection来获取光标所在位置
          let length = quill.getSelection().index;
          // 插入“video”或者“image”  第三个参数为服务器端返回的地址
          quill.insertEmbed(length, "video", res.data);
          // 调整光标到最后
          quill.setSelection(length + 1);
          console.log(this.content)
        } else {
          this.$message.error("视频插入失败");
        }
        // loading动画消失
        this.quillUpdateImg = false;
 },

到这里自定义的文件服务器上传就完成了。

quill-image-resize-modules的使用

图片只有上传可远远不够,因为用户的图片大小规格不一,改变图片大小的需求是肯定会存在的。

这个插件在安装之后的引用遇到了许多问题,类似"Cannot read property 'register' of undefined"、"Cannot read property 'imports' of undefined" ,也百度了许多方案,但是很多行不通。这里记录下解决方案。

首先是quill-image-resize-module的引入,安装过程就不多做解释。

//引入
  import "quill/dist/quill.core.css";
  import "quill/dist/quill.snow.css
### 如何在 Quill 富文本编辑器中使用 `quill-image-resize-module` 实现图片缩放功能 要在 Quill 富文本编辑器中实现图片缩放功能,可以通过安装并配置 `quill-image-resize-module` 来完成。以下是详细的说明代码示例: #### 1. 安装依赖 首先需要确保已经安装了 `quill` `quill-image-resize-module` 模块。如果尚未安装,可以运行以下命令来安装它们: ```bash npm install quill quill-image-resize-module --save ``` 此步骤是为了引入必要的库文件以便后续开发[^2]。 #### 2. 配置 Quill 编辑器 在初始化 Quill 编辑器时,需将 `quill-image-resize-module` 注册为模块的一部分。具体方法如下所示: ```javascript import Quill from 'quill'; // 引入样式表 import 'quill/dist/quill.snow.css'; // 引入图片调整大小的模块 import ImageResize from 'quill-image-resize-module'; // 将图片调整大小的功能注册到 QuillQuill.register('modules/imageResize', ImageResize); const toolbarOptions = [ [{ header: [1, 2, false] }], ['bold', 'italic', 'underline'], [{'list': 'ordered'}, {'list': 'bullet'}], ['link', 'image'] ]; new Quill('#editor-container', { theme: 'snow', modules: { toolbar: toolbarOptions, imageResize: true // 启用图片调整大小功能 } }); ``` 上述代码片段展示了如何正确地导入启用该模块,并将其应用至 Quill 的实例上[^5]。 #### 3. 处理可能遇到的问题 当尝试集成 `quill-image-resize-module` 到 Nuxt.js 或其他框架环境下的 Vue 应用程序时,可能会碰到诸如 **"Cannot read property 'imports' of undefined"** 这样的错误消息。这类问题通常源于版本兼容性或者不恰当的加载顺序所致。解决办法之一便是升级所使用的 npm 包版本或是参照官方文档重新审视当前项目的构建流程[^4]。 另外值得注意的是,在某些特定场景下(比如 Vue 组件内部),还需要额外注意生命周期钩子函数的应用时机以避免潜在冲突情况的发生[^3]。 #### 4. 自定义外观与行为 除了基础功能外,还可以进一步自定义图片拖拽区域的颜色、边框以及其他交互细节等内容。例如设置背景颜色为黑色、移除默认边界线以及更改字体显示风格等参数均可以在创建新实例前通过传递对象形式指定给对应属性值如下面这段代码所示: ```javascript modules: { ... imageResize: { displayStyles: { backgroundColor: '#000000', border: 'none', color: '#ffffff' }, modules: ['Resize', 'DisplaySize', 'Toolbar'] } } ``` 以上部分允许开发者灵活调整最终呈现效果满足个性化需求的同时也保持高度一致性用户体验标准。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值