1. 程式人生 > >ueditor1.4.3配置過程(包含單獨上傳檔案以及圖片的使用)

ueditor1.4.3配置過程(包含單獨上傳檔案以及圖片的使用)

這裡使用的是ueditor1.4.3的jsp版本的UTF-8版本.

首先下載相應的ueditor,將ueditor資料夾直接拷貝到專案中,檔案結構如下所示:

然後將專案要用的jar包匯入到lib目錄下,在匯入之前要先修改一下ueditor的jar包中的bug,這個可以參考這裡點選開啟連結

接著就是配置jsp目錄下的config.json檔案了,讓它能適應我們的專案,配置內容如下:

/* 前後端通訊相關的配置,註釋只允許使用多行方式 */
{
    /* 上傳圖片配置項 */
    "imageActionName": "uploadimage", /* 執行上傳圖片的action名稱 */
    "imageFieldName": "upfile", /* 提交的圖片表單名稱 */
    "imageMaxSize": 51200000, /* 上傳大小限制,單位B */
    "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp",".swf"], /* 上傳圖片格式顯示 */
    "imageCompressEnable": true, /* 是否壓縮圖片,預設是true */
    "imageCompressBorder": 1600, /* 圖片壓縮最長邊限制 */
    "imageInsertAlign": "none", /* 插入的圖片浮動方式 */
    "imageUrlPrefix": "http://localhost:8080/soulpower", /* 圖片訪問路徑字首 */


    "imagePathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳儲存路徑,可以自定義儲存路徑和檔名格式 */
                                /* {filename} 會替換成原檔名,配置這項需要注意中文亂碼問題 */
                                /* {rand:6} 會替換成隨機數,後面的數字是隨機數的位數 */
                                /* {time} 會替換成時間戳 */
                                /* {yyyy} 會替換成四位年份 */
                                /* {yy} 會替換成兩位年份 */
                                /* {mm} 會替換成兩位月份 */
                                /* {dd} 會替換成兩位日期 */
                                /* {hh} 會替換成兩位小時 */
                                /* {ii} 會替換成兩位分鐘 */
                                /* {ss} 會替換成兩位秒 */
                                /* 非法字元 \ : * ? " < > | */
                                /* 具請體看線上文件: fex.baidu.com/ueditor/#use-format_upload_filename */


    /* 塗鴉圖片上傳配置項 */
    "scrawlActionName": "uploadscrawl", /* 執行上傳塗鴉的action名稱 */
    "scrawlFieldName": "upfile", /* 提交的圖片表單名稱 */
    "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳儲存路徑,可以自定義儲存路徑和檔名格式 */
    "scrawlMaxSize": 2048000, /* 上傳大小限制,單位B */
    "scrawlUrlPrefix": "", /* 圖片訪問路徑字首 */
    "scrawlInsertAlign": "none",


    /* 截圖工具上傳 */
    "snapscreenActionName": "uploadimage", /* 執行上傳截圖的action名稱 */
    "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳儲存路徑,可以自定義儲存路徑和檔名格式 */
    "snapscreenUrlPrefix": "", /* 圖片訪問路徑字首 */
    "snapscreenInsertAlign": "none", /* 插入的圖片浮動方式 */


    /* 抓取遠端圖片配置 */
    "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
    "catcherActionName": "catchimage", /* 執行抓取遠端圖片的action名稱 */
    "catcherFieldName": "source", /* 提交的圖片列表表單名稱 */
    "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳儲存路徑,可以自定義儲存路徑和檔名格式 */
    "catcherUrlPrefix": "", /* 圖片訪問路徑字首 */
    "catcherMaxSize": 2048000, /* 上傳大小限制,單位B */
    "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取圖片格式顯示 */


    /* 上傳視訊配置 */
    "videoActionName": "uploadvideo", /* 執行上傳視訊的action名稱 */
    "videoFieldName": "upfile", /* 提交的視訊表單名稱 */
    "videoPathFormat": "/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳儲存路徑,可以自定義儲存路徑和檔名格式 */
    "videoUrlPrefix": "http://localhost:8080/soulpower", /* 視訊訪問路徑字首 */

    "videoMaxSize": 102400000, /* 上傳大小限制,單位B,預設100MB */
    "videoAllowFiles": [
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上傳視訊格式顯示 */


    /* 上傳檔案配置 */
    "fileActionName": "uploadfile", /* controller裡,執行上傳視訊的action名稱 */
    "fileFieldName": "upfile", /* 提交的檔案表單名稱 */
    "filePathFormat": "/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳儲存路徑,可以自定義儲存路徑和檔名格式 */
    "fileUrlPrefix": "http://localhost:8080/soulpower", /* 檔案訪問路徑字首 */

    "fileMaxSize": 51200000, /* 上傳大小限制,單位B,預設50MB */
    "fileAllowFiles": [
        ".png", ".jpg", ".jpeg", ".gif", ".bmp",
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
        ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
        ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
    ], /* 上傳檔案格式顯示 */


    /* 列出指定目錄下的圖片 */
    "imageManagerActionName": "listimage", /* 執行圖片管理的action名稱 */
    "imageManagerListPath": "/ueditor/jsp/upload/image/", /* 指定要列出圖片的目錄 */
    "imageManagerListSize": 20, /* 每次列出檔案數量 */
    "imageManagerUrlPrefix": "http://localhost:8080/soulpower", /* 圖片訪問路徑字首 */
    "imageManagerInsertAlign": "none", /* 插入的圖片浮動方式 */
    "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的檔案型別 */


    /* 列出指定目錄下的檔案 */
    "fileManagerActionName": "listfile", /* 執行檔案管理的action名稱 */
    "fileManagerListPath": "/ueditor/jsp/upload/file/", /* 指定要列出檔案的目錄 */
    "fileManagerUrlPrefix": "http://localhost:8080/soulpower", /* 檔案訪問路徑字首 */
    "fileManagerListSize": 20, /* 每次列出檔案數量 */
    "fileManagerAllowFiles": [
        ".png", ".jpg", ".jpeg", ".gif", ".bmp",
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
        ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
        ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
    ] /* 列出的檔案型別 */


}

我主要修改了各種檔案的上傳字首,讓專案能夠使用到相應的檔案.(這裡要注意一點,我們的congfig.json是UTF-8的版本,當你把專案部署到伺服器上的時候通過文字編輯器修改這個檔案的時候是不起效果的,專案會出錯,這是因為編碼衝突的問題,所以我一般都是在IDE中修改好了以後之間複製到伺服器上的.)

然後就是頁面的配置了

首先引入兩個js檔案

<script src="${pageContext.request.contextPath}/ueditor/ueditor.config.js" type="text/javascript"></script>
<script src="${pageContext.request.contextPath}/ueditor/ueditor.all.js"    type="text/javascript"></script>
然後要初始化兩個引數
<script type="text/javascript"><span style="white-space:pre">	</span>$(function() {
<span style="white-space:pre">		</span>window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/ueditor/";
<span style="white-space:pre">		</span>window.REAL_PATH = "${pageContext.request.contextPath}";
<span style="white-space:pre">	</span>});</script><span style="white-space:pre">	</span>
這兩個引數是指定ueditor的使用路徑

接著在body中加入一個uditor的script

<script id="container" name="content" type="text/plain" style="width:100%;height:500px;">
</script>
然後就是初始化這個container了
	<script type="text/javascript">
		var ue = UE.getEditor("container");
	</script>

這樣我們的ueditor就可以正常使用了.

下面介紹一下如何獨立使用圖片上傳功能和檔案上傳功能

使用剛才的頁面,我們在

var ue = UE.getEditor("container");
加入如下的javascript程式碼
container.ready(function () {
    //設定編輯器不可用
    //<pre name="code" class="html">container<span style="font-family: Arial, Helvetica, sans-serif;">.setDisabled();</span>
//隱藏編輯器,因為不會用到這個編輯器例項,所以要隱藏
container<span style="font-family: Arial, Helvetica, sans-serif;">.hide();</span>
//偵聽圖片上傳container.addListener('beforeInsertImage', function (t, arg) {
//將地址賦值給相應的input $("#"+inpt).val(arg[0].src); //圖片預覽 $("#"+prev).attr("src", arg[0].src); }); //偵聽檔案上傳container.addListener('afterUpfile', function (t, arg) {
$("#file").attr("value", arg[0].url); });});
//彈出圖片上傳的對話方塊
function upImage() {
    var myImage = container.getDialog("insertimage");
    myImage.open();
}
//彈出檔案上傳的對話方塊
function upFiles() {
    var myFiles = container.getDialog("attachment");
    myFiles.open();
}
通過按鈕來呼叫這兩個函式就可以完成檔案上傳以及圖片上傳的單獨使用了.圖片上傳沒有問題,但是檔案上傳我們需要作一些修改

開啟ueditor.all.js,找到如下位置,插入紅色背景的程式碼

        commands:{
            'insertfile': {
                execCommand: function (command, filelist){
                    filelist = utils.isArray(filelist) ? filelist : [filelist];
                    if(me.fireEvent('afterUpfile', filelist) === true){
                        return;
                    }

                    var i, item, icon, title,
                        html = '',
                        URL = me.getOpt('UEDITOR_HOME_URL'),
                        iconDir = URL + (URL.substr(URL.length - 1) == '/' ? '':'/') + 'dialogs/attachment/fileTypeImages/';
                    for (i = 0; i < filelist.length; i++) {
                        item = filelist[i];
                        icon = iconDir + getFileIcon(item.url);
                        title = item.title || item.url.substr(item.url.lastIndexOf('/') + 1);
                        html += '<p style="line-height: 16px;">' +
                            '<img style="vertical-align: middle; margin-right: 2px;" src="'+ icon + '" _src="' + icon + '" />' +
                            '<a style="font-size:12px; color:#0066cc;" href="' + item.url +'" title="' + title + '">' + title + '</a>' +
                            '</p>';
                    }
                    me.execCommand('insertHtml', html);
                }
            }
        }

主要是ueditor中沒有afterUpfile事件,我們自己觸發一下.(如果你的專案以前執行過ueditor的專案,那麼修改了這裡要注意清空一下瀏覽器的快取,因為ueditor是有快取的,否則修改無法生效)