vue3+springboot集成百度編輯器UEditor-Plus解決圖片上傳問題

今夕是何年冠骄,回首過往瑞躺,已許久沒有寫文章了,主要是過去太忙,沒有太多閑暇時光捷泞,主要還是自己太懶了吧??到推。廢話不多說底循,今天主要是記錄使用vue3集成百度編輯器解決上傳圖片的問題踱卵,我一直以為百度編輯器沒有更新了,很久沒有關注了郑临,直到最近在gitee上面刷到了UEditor-Plus項目栖博,才知道有新的維護了,體驗了一下感覺還是蠻不知錯的厢洞。在實際項目中也用過很多編輯器仇让,有的時候一些功能就很難滿足需求,之前用過wangEditor使用很方便躺翻,集成也非常簡單丧叽,但是表格功能沒有合并單元格功能,最近作者也說停止維護更新了公你,找一款好用的編輯器尤為重要蠢正,百度編輯器功能這塊還是蠻豐富的,所以今天就簡單記錄一下我集成的過程和所采的坑省店。

第一步:1.先解決前端集成問題嚣崭,現(xiàn)在vue比較主流,相關的組件已經(jīng)封裝好了懦傍,官網(wǎng)直達就知道怎么用了vue-ueditor-wrap雹舀,通過以下命令之間安裝就ok了。

# vue-ueditor-wrap v3 僅支持 Vue 3
npm i vue-ueditor-wrap@3.x -S
# or
yarn add vue-ueditor-wrap@3.x

2.在main.js中配置

import {VueUeditorWrap} from "vue-ueditor-wrap";
app.use(VueUeditorWrap)
  1. 在具體的頁面中使用
<template>
  <vue-ueditor-wrap v-model="content"
                                 editor-id="editor"
                                 :config="editorConfig"
                                 :editorDependencies="['ueditor.config.js','ueditor.all.js']"
                                 style="height:500px;"/>

</template>
<script>
  const content = ref('')
const editorConfig=ref({
  zIndex:10000, //設置層級
  initialFrameWidth:'100%', //設置編輯器寬度
  
  serverUrl: 'http://xx.xx.xx/uEditor'  //統(tǒng)一請求服務器地址(上傳接口地址)
  // 配置 UEditorPlus 的靜態(tài)資源根路徑粗俱,可以是 CDN 的靜態(tài)資源地址
  UEDITOR_HOME_URL: '/UEditor/', //在vue項目public目錄中導入的編輯器靜態(tài)資源
  UEDITOR_CORS_URL: '/UEditor/'
})
</script>

靜態(tài)資源在vue-ueditor-wrap文檔里面有說明说榆,安裝組件的下一步下載UEeitor資源即可。


image.png

根據(jù)需要自己下載合適的版本寸认,下載后將目錄拷貝至vue的public目錄,命名一個文件夾签财,這個和上述UEDITOR_HOME_URL: '/UEditor/' 有關,比如我的目錄叫UEditor,這樣配置就可以了偏塞,這些配置好以后唱蒸,編輯器就可以展示出來了,效果如下:

image.png

ok,出現(xiàn)這個效果說明配置OK了,但是此時灸叼,圖片上傳是不行的神汹,提示上傳插件配置異常


image.png

解決這個問題,需要結合后端配置,接下來我們就該處理圖片上傳的問題了古今。

第二步:處理圖片及文件上傳問題屁魏,百度編輯器和其他編輯器不太一樣的地方是提供了后臺相關的開發(fā)包demo,我們根據(jù)自己的需要進行下載參考捉腥。https://open-doc.modstart.com/ueditor-plus/backend.html#uploadimage 閱讀這個文檔我們得知文件上傳的接口規(guī)范信息

GET {"action": "config"}  //讀取配置的action名稱
GET {"action": "uploadimage"} //上傳圖片的action名稱
POST "upfile": File Data //上傳文件的name名稱

上傳返回格式:
{
   "state": "SUCCESS",
   "url": "upload/demo.jpg",
   "title": "demo.jpg",
   "original": "demo.jpg"
}

有了這些消息氓拼,就知道怎么處理接口了,在我們下載的資源包里面有個jsp/config.json文件抵碟,這個就是返回配置的具體內容桃漾,拷貝至springboot項目的resources目錄


image.png

定義編輯器文件上傳接口


    /**
     * UEditor編輯器上傳處理
     * @param action
     * @param upfile 
     * @return
     */
    @RequestMapping("/uEditor")
    public Object uEditor(@RequestParam("action") String action,@RequestParam(value = "upfile",required = false) MultipartFile upfile)  {

    //判斷action:為config時,返回config.json的內容即可
   switch (action){
            case "config":
                final InputStream resourceAsStream =  
             App.class.getResourceAsStream("/uEditor/config.json");

                assert resourceAsStream != null;
                try(BufferedReader reader = new BufferedReader(new InputStreamReader(resourceAsStream))){
                    String line;
                    final StringBuilder sb = new StringBuilder();
                    while ((line=reader.readLine())!=null){

                        sb.append(line);

                    }

                    return sb.toString();
                } catch (IOException e) {

                    e.printStackTrace();

                    return null;
                }
            //圖片上傳
            case "uploadimage":

                if(upfile!=null){

                     //todo 具體保存文件邏輯(偽代碼)請?zhí)鎿Q自己的邏輯
                       FileInfo  fileInfo = uploadService.upload(upfile)

                    final HashMap<Object, Object> map = new HashMap<>(4);

                    map.put("state","SUCCESS");
                    map.put("title",fileInfo.getOriginalName());
                    map.put("original",fileInfo.getOriginalName());
                    map.put("url",fileInfo.getUrl());

                    return map;

                }

        }
 
}

Q1:這樣就可以了嗎立磁?呈队??不行唱歧,發(fā)現(xiàn)還是不能上傳宪摧,還是提示插件加載失敗,原因是什么呢?問題在前端的編輯器資源包中ueditor.all.js颅崩,因為我的springboot是支持跨域請求的几于,而ueditor.all.js中有個加載配置請求,跨域的話是使用jsonp來請求的沿后,而我們的接口又不支持jsonp請求沿彭,所以這個接口訪問config配置的時候加載失敗,找到ueditor.all.js,改一下邏輯,將jsonp請問標識改成fasle尖滚,讓ajax發(fā)起非jsonp請求即可


image.png

ok喉刘,再刷新頁面看看瞧柔,圖片上傳插件就加載成功了,至此上傳圖片的配置就完成了,當然了其他的視頻睦裳、附件等也是同理只是不同的action標識而已造锅,如果方便的話都改成統(tǒng)一的action名稱就可以了,單獨處理就判斷action名稱就可以了廉邑。

image.png

Q2:加了接口了哥蔚,改了serverUrl,還是顯示加載插件失敗,需要在組件里面要加這個配置 :editorDependencies="['ueditor.config.js','ueditor.all.js']" 這個配置必須加上蛛蒙,否則不會執(zhí)行ajax獲取配置的請求,確保訪問action=config的時候返回config.json的內容即可糙箍。

Q3:上傳的圖片設置img標簽圖片寬度自適應,網(wǎng)上很多人說在靜態(tài)資源包themes下的iframe.css里面加樣式

img{width:100%}

的確,加了之后上傳圖片是會自動適應編輯器了牵祟,但是圖片本身是沒有樣式的深夯,放到前端展示還是會有問題,除非自己單獨設置img的樣式课舍,不然還是會不適配塌西。那怎么自動給img標簽加上style樣式呢,還是在ueditor.all.js里面修改
修改1:


image.png

修改2 :


image.png
loader.setAttribute('style','max-width:100%');

這樣就可以了筝尾,上傳圖片成功后,img標簽會自動加style屬性捡需,這樣富文本中的圖片在前端展示的時候就會自適應了,不需要額為加css控制了筹淫。

總結: 本篇文章主要通過以上兩步站辉,介紹了UEditor-plus的集成以及相關問題的處理,這就是我這使用UEditor-plus編輯器過程會遇到的問題以及處理方法损姜,當然這不是唯一的饰剥,得具體問題具體分析。希望能夠幫助到有需要的朋友摧阅,有問題歡迎留言交流汰蓉,喜歡我的文章記得關注我哦??!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末棒卷,一起剝皮案震驚了整個濱河市顾孽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌比规,老刑警劉巖若厚,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蜒什,居然都是意外死亡测秸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霎冯,“玉大人铃拇,你說我怎么就攤上這事∷嗤恚” “怎么了锚贱?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長关串。 經(jīng)常有香客問我,道長监徘,這世上最難降的妖魔是什么晋修? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮凰盔,結果婚禮上墓卦,老公的妹妹穿的比我還像新娘。我一直安慰自己户敬,他們只是感情好落剪,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尿庐,像睡著了一般忠怖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抄瑟,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天凡泣,我揣著相機與錄音,去河邊找鬼皮假。 笑死鞋拟,一個胖子當著我的面吹牛,可吹牛的內容都是我干的惹资。 我是一名探鬼主播贺纲,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褪测!你這毒婦竟也來了猴誊?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汰扭,失蹤者是張志新(化名)和其女友劉穎稠肘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萝毛,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡项阴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片环揽。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡略荡,死狀恐怖,靈堂內的尸體忽然破棺而出歉胶,到底是詐尸還是另有隱情汛兜,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布通今,位于F島的核電站粥谬,受9級特大地震影響,放射性物質發(fā)生泄漏辫塌。R本人自食惡果不足惜漏策,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臼氨。 院中可真熱鬧掺喻,春花似錦、人聲如沸储矩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽持隧。三九已至即硼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舆蝴,已是汗流浹背谦絮。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洁仗,地道東北人层皱。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像赠潦,于是被迫代替她去往敵國和親叫胖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容