quill-image-extend-module
vue-quill-editor的增強模塊,
功能:
- 提供圖片上傳到服務器的功能
- 復制插入
- 拖拽插入
- 顯示上傳進度
- 顯示上傳成功或者失敗
- 支持與其他模塊一起使用(例如調整圖片大小)
更新情況
-
version 1.1
- 增加上傳顯示文字樣式
- 增加圖片超過自定義大小的回調 sizeError
- 修復同一頁面多個富文本編輯器上傳圖片只能插入第一個編輯器的bug
- 引入QuillWatch 全局監聽多個富文本編輯器
-
version 1.1.2
- 由於編輯器本身就有復制功能,因此取消了復制上傳服務器的功能,避免沖突,復制上傳采用富文本編輯器自帶的功能
- 修復圖片插入老是跑到最后面的問題
Install
npm install quill-image-extend-module --save-dev
use
import {quillEditor, Quill} from 'vue-quill-editor' import {container, ImageExtend, QuillWatch} 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, QuillWatch} 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 () { QuillWatch.emit(this.quill.id) } } } } } } } } </script>
quill-image-extend-module 的所有可配置項
editorOption: { modules: { ImageExtend: { // 如果不作設置,即{} 則依然開啟復制粘貼功能且以base64插入 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) => { // xhr.setRequestHeader('myHeader','myValue') }, // 可選參數 設置請求頭部 sizeError: () => {}, // 圖片超過大小的回調 start: () => {}, // 可選參數 自定義開始上傳觸發事件 end: () => {}, // 可選參數 自定義上傳結束觸發的事件,無論成功或者失敗 error: () => {}, // 可選參數 上傳失敗觸發的事件 success: () => {}, // 可選參數 上傳成功觸發的事件 change: (xhr, formData) => { // xhr.setRequestHeader('myHeader','myValue') // formData.append('token', 'myToken') } // 可選參數 每次選擇圖片觸發,也可用來設置頭部,但比headers多了一個參數,可設置formData }, toolbar: { // 如果不上傳圖片到服務器,此處不必配置 container: container, // container為工具欄,此次引入了全部工具欄,也可自行配置 handlers: { 'image': function () { // 劫持原來的圖片點擊按鈕事件 QuillWatch.emit(this.quill.id) } } } } }
注意事項 (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, QuillWatch} 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: { name: 'img', size: 2, // 單位為M, 1M = 1024KB action: updateUrl, headers: (xhr) => { }, response: (res) => { return res.info } }, toolbar: { container: container, handlers: { 'image': function () { QuillWatch.emit(this.quill.id) } } } } } } } } </script>