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封裝的方式侷限性比較大,所以這種場景反而更常見,我目前也是這樣的方法。使用官方提供的方式雖然已經踩過了不少坑,但是仍然需要繼續完善,等以後有時間了再更新。)