# quill-image-extend-module :實現vue-quill-editor圖片上傳,複製粘貼,拖拽

quill-image-extend-module

vue-quill-editor的加強模塊,vue

功能:git

  • 提供圖片上傳到服務器的功能
  • 複製插入
  • 拖拽插入
  • 顯示上傳進度
  • 顯示上傳成功或者失敗
  • 支持與其餘模塊一塊兒使用(例如調整圖片大小)

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)

因爲不一樣的用戶的服務器返回的數據格式不盡相同github

所以
在配置中,你必須以下操做npm

// 你必須把返回的數據中所包含的圖片地址 return 回去
 respnse: (res) => {
    return res.info  // 這裏切記要return回你的圖片地址
 }

好比你的服務器返回的成功數據爲bash

{
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>