百度富文本編輯器UEditor 的引入及簡單應用筆記

由於最近項目中頁面開發用到了UEditor ,所以在此寫一遍簡單的使用筆記,以供各位同行參考,希望有所助益。

本文將對UEditor 的引入,圖片上傳及回顯。

1.  UEditor的引入

     1.1 下載響應的UEditor版本,下載地址:https://ueditor.baidu.com/website/download.html#ueditor 

           本人項目中下載了[1.4.3.3 Jsp 版本] UTF-8版 。

     1.2 將下載的文件解壓,將解壓後的文件夾 ueditor1_4_3_3-utf8-jsp 複製到 項目的js目錄下。將controller.jsp和config.json 兩個文件 複製到 項目的webapp目錄下 和 WEB-INF目錄平級。將ueditor1_4_3_3-utf8-jsp\utf8-jsp\jsp\lib 目錄下的 各個jar包 通過pom.xml 文件替換導入所需依賴,原來的lib文件夾可以刪除掉 如下:

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.9</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180813</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.gitee.qdbp.thirdparty/ueditor -->
<dependency>
    <groupId>com.gitee.qdbp.thirdparty</groupId>
    <artifactId>ueditor</artifactId>
    <version>1.4.3.3</version>
</dependency>

 

     1.3 打開ueditor.config.js 文件,做如下三處修改:

           1.3.1 將 var URL = window.UEDITOR_HOME_URL || getUEBasePath();

修改爲 var URL = window.UEDITOR_HOME_URL || "/js/ueditor1_4_3_3-utf8-jsp/"; (ueditor1_4_3_3-utf8-jsp 在項目中路徑)

           1.3.2 將 serverUrl: URL + "jsp/controller.jsp" 修改爲 serverUrl: URL + "/controller.jsp"

           1.3.3  選擇富文本編輯框中工具欄 需要的功能,不需要的可以在下面註釋掉。

toolbars: [[
    'fullscreen', 'source', '|', 'undo', 'redo', '|',
    'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',
    'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
    'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',
    'directionalityltr', 'directionalityrtl', 'indent', '|',
    'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase',
    'link', 'unlink', 'anchor', '|',
    // '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',
    'insertimage', 'emotion',
    //'simpleupload','scrawl','insertvideo', 'music',  'gmap', 'insertframe','attachment',
    'map', 'insertcode', '|',
    // 'webapp',
    'pagebreak', 'template',
    // 'background', '|',
    'horizontal', 'date', 'time', 'spechars', '|',
    // 'snapscreen', 'wordimage', '|', 'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',
    'print', 'preview', 'searchreplace', 'drafts', 'help'
]]

      1.4 js和jsp中配置

            1.4.1 開發的jsp頁面中 引入下面內容:

<script type="text/javascript" charset="utf-8"
        src="/js/ueditor1_4_3_3-utf8-jsp/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
        src="/js/ueditor1_4_3_3-utf8-jsp/ueditor.all.min.js"></script>
<!--這裏加載的語言文件會覆蓋你在配置項目裏添加的語言類型,比如你在配置項目裏配置的是英文,這裏加載的中文,那最後就是中文-->
<script type="text/javascript" charset="utf-8"
        src="/js/ueditor1_4_3_3-utf8-jsp/lang/zh-cn/zh-cn.js"></script>

jsp頁面中需要放置富文本編輯框的 地方 加入如下內容。

<textarea id="wxContent" name="wxContent" style="width:100%;height: 300px;"></textarea>

 

             1.4.2 開發的js頁面中 加入如下內容:

//實例化uEditor編輯器
var uEditor = UE.getEditor('wxContent');

到此如果沒有操作 錯誤的話,頁面上是可以展示富文本編輯框的。

2. 多圖上傳及圖片回顯(下面程序中加上 服務器ip及端口號 是因爲此處是跨域上傳和訪問)

    2.1 多圖上傳到web服務器: 

         2.1.1  修改config.json 文件的兩處地方

"imageUrlPrefix": "http://192.***.***.***:8082/pictures/", /* 圖片訪問路徑前綴(web服務器上的圖片訪問url) */
"imagePathFormat": "", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */

         2.1.2 開發的頁面js中添加如下代碼:

//實例化uEditor編輯器
var uEditor = UE.getEditor('wxContent');

UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function (action) {
    if (action == 'uploadimage') {
        //自定義的上傳接口
        return 'http://192.***.***.***:8082/my/BaseController/uploadUEditorImage';
    } else {
        return this._bkGetActionUrl.call(this, action);
    }
}     

     2.1.3 後端上傳接口
@RequestMapping(value = "/uploadUEditorImage", method = RequestMethod.POST)
@ResponseBody
public String uploadUEditorImage(@RequestParam(value = "upfile", required = false) MultipartFile file) {

    try {
        // 接收上傳的文件, 取擴展名
        String fileName = file.getOriginalFilename();
        fileName = fileName.replaceAll("\\s*", "");
        String newFileName = FileUtil.doGetFileName(fileName);

        //獲取文件大小(字節b byte)
        BigDecimal fileSize = new BigDecimal(file.getSize());
        BigDecimal mod = new BigDecimal(1024);
        //從大到小順序爲T、GB、MB(兆Zhao)、KB、B再小就是位了。除兩個1024,保留兩位小數,進行四捨五入
        fileSize = fileSize.divide(mod).divide(mod).setScale(2, BigDecimal.ROUND_HALF_UP);

        if (fileSize.compareTo(new BigDecimal(5)) > 0) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("status", "ERROR");
            return jsonObject.toJSONString();
        }

        byte[] byteArray = file.getBytes();
        //上傳
        xxxxxService.uploadPicture(byteArray, currentUrl, newFileName);

        Map<String, Object> result = new HashMap<>(8);

        //原始文件名(用於文件名回顯)
        result.put("original", fileName);
        result.put("size", fileSize);
        result.put("state", "SUCCESS");
        //展示圖片的請求url(圖片在服務器上的名字或者訪問路:http://192.***.***.***:8082/pictures/wxTbt6EC5E8DC-1.png)
        result.put("url", newFileName);
        //展示圖片的描述和懸浮提示(此處用源文件名)
        result.put("title", fileName);
        logger.info("\n【返回服務器上的圖片訪問路徑】:{}", "/pictures/" + newFileName);

        String jStr = JSON.toJSONString(result);
        //返回值用於頁面圖片回顯
        return jStr;
    } catch (Exception ex) {
        logger.info("\n【上傳失敗!】:{}", ex);
    }

    return null;
}

到此,即可完成多圖上傳功能!

另附 常用的UEditor 方法(網上查詢所得,有個別未曾親自驗證,使用時僅供參考)如下:

1、創建編輯器

UE.getEditor('editor', {

initialFrameWidth:"100%" //初始化選項

})

精簡版

UE.getEditor('editor')

2、刪除編輯器

UE.getEditor('editor').destroy();

3、設置焦點

UE.getEditor('editor').focus();

4、獲取編輯器內容

UE.getEditor('editor').getContent()

5、編輯器是否有內容

UE.getEditor('editor').hasContents()

6、獲取編輯器內容純文本格式

UE.getEditor('editor').getContentTxt()

7、獲取帶格式的純文本

UE.getEditor('editor').getPlainTxt()

8、啓用編輯器

UE.getEditor('editor').setEnabled();

9、禁止編輯

UE.getEditor('editor').setDisabled('fullscreen');

10、獲取整個html內容

UE.getEditor('editor').getAllHtml()

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章