zoukankan      html  css  js  c++  java
  • # quill-image-extend-module :实现vue-quill-editor图片上传,复制粘贴,拖拽

    改造vue-quill-editor: 结合element-ui上传图片到服务器
    quill-image-extend-module

    vue-quill-editor的增强模块,

    功能:

    • 提供图片上传到服务器的功能
    • 复制插入
    • 拖拽插入
    • 显示上传进度
    • 显示上传成功或者失败
    • 支持与其他模块一起使用(例如调整图片大小)

    Install

    npm install quill-image-extend-module --save-dev
    

    use

      import {quillEditor, Quill} from 'vue-quill-editor'
      import {container, ImageExtend} from 'quill-image-extend-module'
    
      Quill.register('modules/ImageExtend', ImageExtend)
    

    example

    <template>
      <div class="quill-wrap">
        <quill-editor
          v-model="content"
          ref="myQuillEditor"
          :options="editorOption"
        >
        </quill-editor>
      </div>
    </template>
    <script>
      import {quillEditor, Quill} from 'vue-quill-editor'
      import {container, ImageExtend} from 'quill-image-extend-module'
    
      Quill.register('modules/ImageExtend', ImageExtend)
      export default {
        components: {quillEditor},
        data() {
          return {
           content: '',
            // 富文本框参数设置
            editorOption: {
              modules: {
                ImageExtend: {
                  loading: true,
                  name: 'img',
                  action: updateUrl,
                  response: (res) => {
                    return res.info
                  }
                },
                toolbar: {
                  container: container,
                  handlers: {
                    'image': function () {
                      document.querySelector('.quill-image-input').click()
                    }
                  }
                }
              }
            }
          }
        }
      }
    </script>
    
    

    quill-image-extend-module 的所有可配置项

     editorOption: {
                         modules: {
                             ImageExtend: {
                                 loading: true,  // 可选参数 是否显示上传进度和提示语
                                 name: 'img',  // 图片参数名
                                 size: 3,  // 可选参数 图片大小,单位为M,1M = 1024kb
                                 action: updateUrl,  // 服务器地址, 如果action为空,则采用base64插入图片
                                 // response 为一个函数用来获取服务器返回的具体图片地址
                                 // 例如服务器返回{code: 200; data:{ url: 'baidu.com'}}
                                 // 则 return res.data.url
                                 response: (res) => {
                                     return res.info
                                 },
                                 headers: (xhr) => {},  // 可选参数 设置请求头部
                                 start: () => {},  // 可选参数 自定义开始上传触发事件
                                 end: () => {},  // 可选参数 自定义上传结束触发的事件,无论成功或者失败
                                 error: () => {},  // 可选参数 自定义网络错误触发的事件
                                 change: (xhr, formData) => {} // 可选参数 选择图片触发,也可用来设置头部,但比headers多了一个参数,可设置formData
                             },
                             toolbar: {
                                 container: container,  // container为工具栏,此次引入了全部工具栏,也可自行配置
                                 handlers: {
                                     'image': function () {  // 劫持原来的图片点击按钮事件
                                         document.querySelector('.quill-image-input').click()
                                     }
                                 }
                             }
                         }
                     }
    

    注意事项 (matters need attention)

    由于不同的用户的服务器返回的数据格式不尽相同

    因此
    在配置中,你必须如下操作

     // 你必须把返回的数据中所包含的图片地址 return 回去
     respnse: (res) => {
        return res.info  // 这里切记要return回你的图片地址
     }
    

    比如你的服务器返回的成功数据为

    {
    code: 200,
    starus: true,
    result: {
        img: 'http://placehold.it/100x100' // 服务器返回的数据中的图片的地址
     }
    }
    

    那么你应该在参数中写为:

     // 你必须把返回的数据中所包含的图片地址 return 回去
     respnse: (res) => {
        return res.result.img  // 这里切记要return回你的图片地址
     }
    

    与其他模块一起使用(以resize-module为例子)

    <template>
      <div class="quill-wrap">
        <quill-editor
          v-model="content"
          ref="myQuillEditor"
          :options="editorOption"
        >
        </quill-editor>
      </div>
    </template>
    <script>
      import {quillEditor, Quill} from 'vue-quill-editor'
      import {container, ImageExtend} from 'quill-image-extend-module'
      import ImageResize from 'quill-image-resize-module'
    
      Quill.register('modules/ImageExtend', ImageExtend)
      // use resize module
      Quill.register('modules/ImageResize', ImageResize)
      export default {
        components: {quillEditor},
        data() {
          return {
            content: '',
            // 富文本框参数设置
            editorOption: {
              modules: {
                ImageResize: {},
                ImageExtend: {
                  loading: true,
                  name: 'img',
                  size: 2,  // 单位为M, 1M = 1024KB
                  action: updateUrl,
                  headers: (xhr) => {
                  },
                  response: (res) => {
                    return res.info
                  }
                },
                toolbar: {
                  container: container,
                  handlers: {
                    'image': function () {
                      document.querySelector('.quill-image-input').click()
                    }
                  }
                }
              }
            }
          }
        }
      }
    </script>
    
    

    原文地址:https://segmentfault.com/a/1190000012992461

  • 相关阅读:
    POJ 3352&&3177 (割边 && 边双连通分量)
    .net程序员的盲点(二):两个“属性”引起的歧异
    .net程序员的盲点(一):参数修饰符ref,out ,params的区别
    .net程序员的盲点(一):参数修饰符ref,out ,params的区别
    args argc argv 的意思以及英文缩写
    .net程序员的盲点(一):参数修饰符ref,out ,params的区别
    .net程序员的盲点(一):参数修饰符ref,out ,params的区别
    .net程序员的盲点(一):参数修饰符ref,out ,params的区别
    args argc argv 的意思以及英文缩写
    args argc argv 的意思以及英文缩写
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9958373.html
Copyright © 2011-2022 走看看