ueditor Java版更改上傳文件路徑

網(wǎng)上大多說方法都是下載源碼來直接修改代碼,這種方式不利于版本升級(jí)。所以我采用繼承碎节、重寫來解決ueditor上傳路徑的問題。

下載ueditor抵卫,放到目錄webapp下狮荔,點(diǎn)擊下載胎撇,目錄結(jié)構(gòu)如下:

圖片.png

導(dǎo)入ueditor需要的jar包

由于我是maven項(xiàng)目,直接在pom.xml中添加依賴即可殖氏,如果是普通的項(xiàng)目晚树,把jar包放倒webapp/WEB-INF/lib下即可。pom.xml如下

<dependency>    
    <groupId>commons-fileupload</groupId>  
    <artifactId>commons-fileupload</artifactId>      
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20160810</version>
</dependency>

這里要單獨(dú)說下ueditor-1.1.2.jar如何在maven中添加本地依賴

  • 將ueditor-1.1.2.jar放入webapp/WEB-INF/lib下雅采,如下


    圖片.png
  • 在pom.xml中添加依賴
<dependency>
    <groupId>com.baidu</groupId>
    <!--自定義-->
    <artifactId>ueditor</artifactId>
    <!--自定義-->
    <version>1.0</version>
    <!--自定義-->
    <scope>system</scope>
    <!--system爵憎,類似provided,需要顯式提供依賴的jar以后婚瓜,Maven就不會(huì)在Repository中查找它-->
    <systemPath>${pom.basedir}/src/main/webapp/WEB-INF/lib/ueditor-1.1.2.jar</systemPath>
    <!--項(xiàng)目根目錄下的lib文件夾下-->
</dependency>

編寫類UeditorActionEnter.java宝鼓,由于ueditor主要是通過ActionEnter.java的invoke來進(jìn)行文件的配置以及上傳等操作,所以重寫改方法即可巴刻。例如上傳目錄為"/Users/mafengli/upload",代碼如下:

package com.test.ueditor;
import com.baidu.ueditor.ActionEnter;
import com.baidu.ueditor.ConfigManager;
import com.baidu.ueditor.define.ActionMap;
import com.baidu.ueditor.define.BaseState;
import com.baidu.ueditor.define.State;
import com.baidu.ueditor.hunter.FileManager;
import com.baidu.ueditor.hunter.ImageHunter;
import com.baidu.ueditor.upload.Uploader;
import com.wjmfl.tools.Config;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/** * Created by mafengli on 16/12/30. */
public class UeditorActionEnter extends ActionEnter {
    private HttpServletRequest request = null;
    private String rootPath = null;
    private String contextPath = null;
    private String actionType = null;
    private ConfigManager configManager = null;
    public UeditorActionEnter(HttpServletRequest request, String rootPath) {
        super(request, rootPath);
        this.request = request;
        this.rootPath = rootPath;
        this.actionType = request.getParameter("action");
        this.contextPath = request.getContextPath();
        this.configManager = ConfigManager.getInstance(this.rootPath, this.contextPath, request.getRequestURI());
    }    
@Override    
public String invoke() {
        if (this.actionType != null && ActionMap.mapping.containsKey(this.actionType)) {
            if (this.configManager != null && this.configManager.valid()) {
                State state = null;
                int actionCode = ActionMap.getType(this.actionType);
                Map<String, Object> conf = null;
                switch (actionCode) { 
                   case 0: 
                       return this.configManager.getAllConfig().toString();
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                        conf = this.configManager.getConfig(actionCode);
                        //注意再這里修改rootPath和savePath席函,上傳的實(shí)際路徑為rootPath+savePath
                        conf.put("rootPath", "/Users/mafengli/");
                        conf.put("savePath", "/upload/" + conf.get("savePath"));
                        state = (new Uploader(this.request, conf)).doExec();
                        break;
                    case 5:
                        conf = this.configManager.getConfig(actionCode);
                        //注意再這里修改rootPath和savePath,上傳的實(shí)際路徑為rootPath+savePath
                        conf.put("rootPath", "/Users/mafengli/");
                        conf.put("savePath", "/upload" + conf.get("savePath"));
                        String[] list = this.request.getParameterValues((String) conf.get("fieldName"));
                        state = (new ImageHunter(conf)).capture(list);
                        break;
                    case 6:
                    case 7:
                        conf = this.configManager.getConfig(actionCode);
                       //注意再這里修改rootPath和savePath冈涧,上傳的實(shí)際路徑為rootPath+savePath
                        conf.put("rootPath", "/Users/mafengli/");
                        conf.put("savePath", "/upload" + conf.get("savePath"));
                        conf.put("dir", "/upload" + conf.get("dir"));
                        int start = this.getStartIndex();
                        state = (new FileManager(conf)).listFile(start);
                }
                return state.toJSONString();
            } else {
                return (new BaseState(false, 102)).toJSONString();
            }
        } else {
            return (new BaseState(false, 101)).toJSONString();
        }
    }
}

修改ueditor的config.json(ueditor/jsp/)的路徑信息:"imagePathFormat","scrawlPathFormat","snapscreenPathFormat","videoPathFormat","filePathFormat","imageManagerListPath","fileManagerListPath",由于我是在java文件中拼接的upload,所以下列配置全部不帶upload

/* 前后端通信相關(guān)的配置,注釋只允許使用多行方式 */
{
    /* 上傳圖片配置項(xiàng) */
    "imageActionName": "uploadimage", /* 執(zhí)行上傳圖片的action名稱 */
    "imageFieldName": "upfile", /* 提交的圖片表單名稱 */
    "imageMaxSize": 2048000, /* 上傳大小限制,單位B */
    "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上傳圖片格式顯示 */
    "imageCompressEnable": true, /* 是否壓縮圖片,默認(rèn)是true */
    "imageCompressBorder": 1600, /* 圖片壓縮最長邊限制 */
    "imageInsertAlign": "none", /* 插入的圖片浮動(dòng)方式 */
    "imageUrlPrefix": "", /* 圖片訪問路徑前綴 */
    "imagePathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */
                                /* {filename} 會(huì)替換成原文件名,配置這項(xiàng)需要注意中文亂碼問題 */
                                /* {rand:6} 會(huì)替換成隨機(jī)數(shù),后面的數(shù)字是隨機(jī)數(shù)的位數(shù) */
                                /* {time} 會(huì)替換成時(shí)間戳 */                                /* {yyyy} 會(huì)替換成四位年份 */
                                /* {yy} 會(huì)替換成兩位年份 */
                                /* {mm} 會(huì)替換成兩位月份 */
                                /* {dd} 會(huì)替換成兩位日期 */
                                /* {hh} 會(huì)替換成兩位小時(shí) */
                                /* {ii} 會(huì)替換成兩位分鐘 */
                                /* {ss} 會(huì)替換成兩位秒 */
                                /* 非法字符 \ : * ? " < > | */
                                /* 具請(qǐng)?bào)w看線上文檔: fex.baidu.com/ueditor/#use-format_upload_filename */
    /* 涂鴉圖片上傳配置項(xiàng) */
    "scrawlActionName": "uploadscrawl", /* 執(zhí)行上傳涂鴉的action名稱 */
    "scrawlFieldName": "upfile", /* 提交的圖片表單名稱 */
    "scrawlPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */
    "scrawlMaxSize": 2048000, /* 上傳大小限制正蛙,單位B */
    "scrawlUrlPrefix": "", /* 圖片訪問路徑前綴 */
    "scrawlInsertAlign": "none",    /* 截圖工具上傳 */
    "snapscreenActionName": "uploadimage", /* 執(zhí)行上傳截圖的action名稱 */
    "snapscreenPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */
    "snapscreenUrlPrefix": "", /* 圖片訪問路徑前綴 */
    "snapscreenInsertAlign": "none", /* 插入的圖片浮動(dòng)方式 */
    /* 抓取遠(yuǎn)程圖片配置 */
    "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
    "catcherActionName": "catchimage", /* 執(zhí)行抓取遠(yuǎn)程圖片的action名稱 */
    "catcherFieldName": "source", /* 提交的圖片列表表單名稱 */
    "catcherPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */
    "catcherUrlPrefix": "", /* 圖片訪問路徑前綴 */
    "catcherMaxSize": 2048000, /* 上傳大小限制督弓,單位B */
    "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取圖片格式顯示 */
    /* 上傳視頻配置 */
    "videoActionName": "uploadvideo", /* 執(zhí)行上傳視頻的action名稱 */
    "videoFieldName": "upfile", /* 提交的視頻表單名稱 */
    "videoPathFormat": "video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */
    "videoUrlPrefix": "", /* 視頻訪問路徑前綴 */
    "videoMaxSize": 102400000, /* 上傳大小限制,單位B乒验,默認(rèn)100MB */
    "videoAllowFiles": [        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上傳視頻格式顯示 */
    /* 上傳文件配置 */
    "fileActionName": "uploadfile", /* controller里,執(zhí)行上傳視頻的action名稱 */
    "fileFieldName": "upfile", /* 提交的文件表單名稱 */
    "filePathFormat": "file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */
    "fileUrlPrefix": "", /* 文件訪問路徑前綴 */
    "fileMaxSize": 51200000, /* 上傳大小限制愚隧,單位B,默認(rèn)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", /* 執(zhí)行圖片管理的action名稱 */
    "imageManagerListPath": "image/", /* 指定要列出圖片的目錄 */
    "imageManagerListSize": 20, /* 每次列出文件數(shù)量 */
    "imageManagerUrlPrefix": "", /* 圖片訪問路徑前綴 */
    "imageManagerInsertAlign": "none", /* 插入的圖片浮動(dòng)方式 */
    "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件類型 */
    /* 列出指定目錄下的文件 */
    "fileManagerActionName": "listfile", /* 執(zhí)行文件管理的action名稱 */
    "fileManagerListPath": "file/", /* 指定要列出文件的目錄 */
    "fileManagerUrlPrefix": "", /* 文件訪問路徑前綴 */
    "fileManagerListSize": 20, /* 每次列出文件數(shù)量 */
    "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"    ] /* 列出的文件類型 */
}

修改controller.jsp(ueditor/jsp/controller.jsp)

將out.write..改為如下:(不要忘記修改import)
out.write( new UeditorActionEnter( request, rootPath ).exec() );

具體代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"  import="com.wjmfl.ueditor.UeditorActionEnter"    pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%
    request.setCharacterEncoding( "utf-8" );
    response.setHeader("Content-Type" , "text/html");
    String rootPath = application.getRealPath( "/" );
    out.write( new UeditorActionEnter( request, rootPath ).exec() );
%>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锻全,一起剝皮案震驚了整個(gè)濱河市狂塘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鳄厌,老刑警劉巖荞胡,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異了嚎,居然都是意外死亡泪漂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門歪泳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萝勤,“玉大人,你說我怎么就攤上這事呐伞〉凶浚” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵伶氢,是天一觀的道長趟径。 經(jīng)常有香客問我瘪吏,道長,這世上最難降的妖魔是什么舵抹? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任肪虎,我火速辦了婚禮,結(jié)果婚禮上惧蛹,老公的妹妹穿的比我還像新娘扇救。我一直安慰自己,他們只是感情好香嗓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布迅腔。 她就那樣靜靜地躺著,像睡著了一般靠娱。 火紅的嫁衣襯著肌膚如雪沧烈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天像云,我揣著相機(jī)與錄音锌雀,去河邊找鬼。 笑死迅诬,一個(gè)胖子當(dāng)著我的面吹牛腋逆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侈贷,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼惩歉,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了俏蛮?” 一聲冷哼從身側(cè)響起撑蚌,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搏屑,沒想到半個(gè)月后争涌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辣恋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年第煮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抑党。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡包警,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出底靠,到底是詐尸還是另有隱情害晦,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布,位于F島的核電站壹瘟,受9級(jí)特大地震影響鲫剿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稻轨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一灵莲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧殴俱,春花似錦政冻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至李丰,卻和暖如春苦锨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趴泌。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國打工舟舒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗜憔。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓秃励,卻偏偏與公主長得像,于是被迫代替她去往敵國和親痹筛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,773評(píng)論 6 342
  • 本文包括:1廓鞠、文件上傳概述2帚稠、利用 Commons-fileupload 組件實(shí)現(xiàn)文件上傳3、核心API——Dis...
    廖少少閱讀 12,531評(píng)論 5 91
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法床佳,類相關(guān)的語法滋早,內(nèi)部類的語法,繼承相關(guān)的語法砌们,異常的語法杆麸,線程的語...
    子非魚_t_閱讀 31,598評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)浪感,斷路器昔头,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • xcode8+如何安裝插件 Xcode插件安裝方式: Github下載插件然后用xcode打開運(yùn)行一遍,然后重啟x...
    andyJi閱讀 533評(píng)論 0 0