配置wangEditor 實(shí)現(xiàn)圖片上傳

首先新建editor.vue文件,用于寫(xiě)配置項(xiàng)

方法1:使用 base64 編碼直接將圖片插入到內(nèi)容中

優(yōu)點(diǎn) :配置簡(jiǎn)單

this.editor.customConfig.uploadImgShowBase64 = true

缺點(diǎn) :上傳圖片過(guò)大或上傳多張圖片角骤,字段可能會(huì)保存失敱锨础(被截?cái)啵┒忻担煌暾舐洌髨D無(wú)法顯示在富文本框等問(wèn)題
???如果項(xiàng)目中不想做圖片限制可以用下面的方法民轴,直接上傳到后端服務(wù)器

方法2:將圖片上傳到后端服務(wù)器

關(guān)鍵代碼

    // 配置服務(wù)器端地址 upload:上傳圖片地址
    editor.customConfig.uploadImgServer = '/upload'
    //可使用監(jiān)聽(tīng)函數(shù)在上傳圖片的不同階段做相應(yīng)處理
    editor.customConfig.uploadImgHooks = {
    before: function (xhr, editor, files) {
        // 圖片上傳之前觸發(fā)
        // xhr 是 XMLHttpRequst 對(duì)象攻柠,editor 是編輯器對(duì)象,files 是選擇的圖片文件
        // 如果返回的結(jié)果是 {prevent: true, msg: 'xxxx'} 則表示用戶放棄上傳
        // return {
        //     prevent: true,
        //     msg: '放棄上傳'
        // }
    },
    success: function (xhr, editor, result) {
        // 圖片上傳并返回結(jié)果后裸,圖片插入成功之后觸發(fā)
        // xhr 是 XMLHttpRequst 對(duì)象瑰钮,editor 是編輯器對(duì)象,result 是服務(wù)器端返回的結(jié)果
    },
    fail: function (xhr, editor, result) {
        // 圖片上傳并返回結(jié)果微驶,但圖片插入錯(cuò)誤時(shí)觸發(fā)
        // xhr 是 XMLHttpRequst 對(duì)象浪谴,editor 是編輯器對(duì)象,result 是服務(wù)器端返回的結(jié)果
    },
    error: function (xhr, editor) {
        // 圖片上傳出錯(cuò)時(shí)觸發(fā)
        // xhr 是 XMLHttpRequst 對(duì)象因苹,editor 是編輯器對(duì)象
    },
    timeout: function (xhr, editor) {
        // 圖片上傳超時(shí)時(shí)觸發(fā)
        // xhr 是 XMLHttpRequst 對(duì)象苟耻,editor 是編輯器對(duì)象
    },
    // 如果服務(wù)器端返回的不是 {errno:0, data: [...]} 這種格式,可使用該配置
    // (但是扶檐,服務(wù)器端返回的必須是一個(gè) JSON 格式字符串P渍取!蘸秘!否則會(huì)報(bào)錯(cuò))
    customInsert: function (insertImg, result, editor) {
        // 圖片上傳并返回結(jié)果官卡,自定義插入圖片的事件(而不是編輯器自動(dòng)插入圖片;茸隆4茁病Q爸洹)
        // insertImg 是插入圖片的函數(shù),editor 是編輯器對(duì)象颈嚼,result 是服務(wù)器端返回的結(jié)果
        // 舉例:假如上傳圖片成功后毛秘,服務(wù)器端返回的是 {url:'....'} 這種格式,即可這樣插入圖片:
        var url = result.url
        insertImg(url)
        // result 必須是一個(gè) JSON 格式字符串W杩巍=行!否則報(bào)錯(cuò)
    }
    }
}

實(shí)例:

<template>
    <div class="editor-wrapper">
        <div :id="editorId"></div>
    </div>
</template>

<script>
    import {BASE_URL} from '@/libs/util.js';
    import Editor from 'wangeditor'
    import 'wangeditor/release/wangEditor.min.css'
    import {oneOf} from '@/libs/tools'
    import {Message} from 'iview';

    export default {
        name: 'Editor',
        data() {
            return {
               //我自己的上傳地址
                upload: BASE_URL + 'admin_api/utils/upload_image',
            }
        },
        props: {
            value: {
                type: String,
                default: ''
            },
            /**
             * 綁定的值的類型, enum: ['html', 'text']
             */
            valueType: {
                type: String,
                default: 'html',
                validator: (val) => {
                    return oneOf(val, ['html', 'text'])
                }
            },
            /**
             * @description 設(shè)置change事件觸發(fā)時(shí)間間隔
             */
            changeInterval: {
                type: Number,
                default: 200
            },
            /**
             * @description 是否開(kāi)啟本地存儲(chǔ)
             */
            cache: {
                type: Boolean,
                default: false
            }
        },
        computed: {
            editorId() {
                return `editor${this._uid}`
            }
        },
        methods: {
            setHtml(val) {
                this.editor.txt.html(val)
            }
        },
        mounted() {
            this.editor = new Editor(`#${this.editorId}`)
            this.editor.customConfig.onchange = (html) => {
                let text = this.editor.txt.text()
                if (this.cache) localStorage.editorCache = html
                this.$emit('input', this.valueType === 'html' ? html : text)
                this.$emit('on-change', html, text)
            }
            this.editor.customConfig.uploadFileName = 'myFile';
            // this.editor.customConfig.uploadImgMaxSize =5 * 1024 * 1024  //控制圖片大小 
            this.editor.customConfig.onchangeTimeout = this.changeInterval
            this.editor.customConfig.uploadFileName = 'file'  //上傳參數(shù) 自定義
            this.editor.customConfig.uploadImgServer = this.upload   //上傳圖片
            this.editor.customConfig.uploadImgHooks = {  //監(jiān)聽(tīng)
                before: function (xhr, editor, files) {
                    // 圖片上傳之前觸發(fā)
                },
                success: function (xhr, editor, result) {
                    // 圖片上傳并返回結(jié)果限煞,圖片插入成功之后觸發(fā)
                },
                fail: function (xhr, editor, result) {
                    Message.error('插入圖片失斈摇!')
                },
                error: function (xhr, editor) {
                    Message.error('插入圖片失斒鹱ぁ奋献!')
                },
                timeout: function (xhr, editor) {
                    Message.error('插入圖片失敗旺上!')
                },
                customInsert: function (insertImg, result, editor) {
                    var url = result.prefix + result.path
                    insertImg(url)
                }
            }
            this.editor.create()
            let html = this.value || localStorage.editorCache
            if (html) this.editor.txt.html(html)
        }
    }
</script>

以上瓶蚂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宣吱,隨后出現(xiàn)的幾起案子窃这,更是在濱河造成了極大的恐慌,老刑警劉巖征候,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杭攻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡疤坝,警方通過(guò)查閱死者的電腦和手機(jī)兆解,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卒煞,“玉大人痪宰,你說(shuō)我怎么就攤上這事∨显#” “怎么了衣撬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)扮饶。 經(jīng)常有香客問(wèn)我具练,道長(zhǎng),這世上最難降的妖魔是什么甜无? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任扛点,我火速辦了婚禮哥遮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陵究。我一直安慰自己眠饮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布铜邮。 她就那樣靜靜地躺著仪召,像睡著了一般。 火紅的嫁衣襯著肌膚如雪松蒜。 梳的紋絲不亂的頭發(fā)上扔茅,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音秸苗,去河邊找鬼召娜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惊楼,可吹牛的內(nèi)容都是我干的玖瘸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胁后,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼店读!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起攀芯,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屯断,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后侣诺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體殖演,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年年鸳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趴久。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搔确,死狀恐怖彼棍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膳算,我是刑警寧澤座硕,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站涕蜂,受9級(jí)特大地震影響华匾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜机隙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一蜘拉、第九天 我趴在偏房一處隱蔽的房頂上張望萨西。 院中可真熱鬧,春花似錦旭旭、人聲如沸谎脯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)穿肄。三九已至年局,卻和暖如春际看,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矢否。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工仲闽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人僵朗。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓赖欣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親验庙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顶吮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354