1. 程式人生 > >springboot整合ueditor 後端篇(簡潔版)

springboot整合ueditor 後端篇(簡潔版)

此文適合前後端分離的ueditor整合springboot,首先要理解ueditor只是個前端的js工具,絕大部分功能都是前端完成。

但是但是圖片,視訊等需要和後端互動的功能就需要稍微配置一下後端,讓那些功能能使用。

1.前一篇文章已經搭建好了前端環境,但是顯示後端配置出錯,無法使用上傳功能。出現這個錯誤的原因是,前端初始化編輯器時,從後端獲取配置時出現錯誤(就是獲取上傳功能的配置)

2.從官網可以瞭解到,此時我們需要配置從後端獲取配置引數的介面。所以我們需要找到ueditor編輯器的配置檔案ueditor.config.js

開啟後可以看到前面箭頭指向的是官方的預設配置,後面被註釋掉的是我加上的我本地的springboot用來獲取配置的介面。所以把官方那個換成我的註釋掉的那個就可以了。

3.再重新重新整理頁面,發現還是出現了錯誤。紅色箭頭分別指向的是上一步配置的介面呼叫和返回的引數,結果為 “配置檔案初始化失敗” 。如下圖:

4.第三步的結果說明沒有獲取到config.json配置檔案的內容,所以接下來的目標就是獲取到配置檔案的內容返回到前端即可。

首先我們把需要的配置檔案放到資源目錄下,配置檔案可以從官網下載的檔案內找到。

5.準備好了配置檔案後就是寫介面獲取到配置檔案的內容,返回給前端即可。

      5.1,介面的controller類方法

@RequestMapping("config")
public Object ueditorConfig(HttpServletRequest request, String callback, String action)  {

    switch (action) {
        case "config": // 此處即為獲取配置檔案的case
            String myresult = UeditorConfig.CONFIG.getConfigStr(callback);
            return myresult;
        case "uploadimage":

            return this.uEditorFileUpload(request);
    }
    log.error("【呼叫介面失敗】,沒有匹配到操作");
    return "【呼叫介面失敗】,沒有匹配到操作";
}

    5.2,配合使用的UeditorConfig列舉類

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public enum UeditorConfig {
    CONFIG();

    private JSONObject config;

    UeditorConfig() {
        StringBuilder config = new StringBuilder();

        try {
//此處即為獲取配置檔案,因為springboot的原因,目前我只能用流來獲取檔案內容
            InputStream stream = getClass().getClassLoader().getResourceAsStream("ueditorConfig/config.json");
            BufferedReader buff = new BufferedReader(new InputStreamReader(stream));
            String temp = null;
            while ((temp = buff.readLine()) != null) {
                config.append(temp);
            }
            //把配置檔案中的註釋去掉
            String configStr = config.toString().replaceAll("/\\*[\\s\\S]*?\\*/", "");
            this.config = JSON.parseObject(configStr);
        } catch (Exception e) {
            this.config = null;
        }
    }

    public JSONObject getConfig() {
        return config;
    }

    public String getConfigStr(String callback) {
        if (this.config == null)
            return (callback + "(讀取配置檔案失敗);");
        return (callback + "(" + this.config.toJSONString() + ");");
    }
}

 6.到此所有的配置就完成了。此時會發現前端獲取配置的請求返回了配置檔案的內容,編輯器也沒有報錯。但是這種方式不能使用ueditor封裝好的上傳檔案的程式碼,所以上傳圖片,檔案等都要我們自己去實現。(雖然需要自己實現,但是ueditor封裝的方式侷限性比較大,所以這種場景反而更常見,我目前也是這樣的方法。使用官方提供的方式雖然已經踩過了不少坑,但是仍然需要繼續完善,等以後有時間了再更新。)