ueditor跨域上传图片文件(基于jsp框架、tomcat)
額,好久沒(méi)有用到ueditor了,因?yàn)楝F(xiàn)在的相關(guān)工作很少涉及到富文本編輯;最近臨時(shí)帶了一個(gè)項(xiàng)目,里面要用到富文本編輯器,而且文件要統(tǒng)一上傳到文件服務(wù)器上保存;應(yīng)為以前用過(guò)ueditor就試著在網(wǎng)上著一些跨域保存的資料,找了半天都是只言片語(yǔ)說(shuō)不清楚,最后摸索了兩天,綜合了網(wǎng)上的很多辦法,結(jié)合自己的一些改進(jìn),有了這篇文章。
一、文件上傳項(xiàng)目的相關(guān)配置:
1、把下載的ueditor解壓到項(xiàng)目的WebRoot目錄下;如下圖所示:
2.導(dǎo)入ueditor的jar包到項(xiàng)目中,下載的jar是有問(wèn)題的,需要自己編譯一下,我把修改后的jar包上傳了,下載地址為:http://download.csdn.net/download/u012613903/9741412
3.修改config.json(ueditor/jsp/config.json)
修改內(nèi)容如下:
/* 前后端通信相關(guān)的配置,注釋只允許使用多行方式 */ {/* 上傳圖片配置項(xiàng) */"imageActionName": "uploadimage", /* 執(zhí)行上傳圖片的action名稱 */"imageFieldName": "upfile", /* 提交的圖片表單名稱 */"imageMaxSize": 51200000, /* 上傳大小限制,單位B */"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp",".swf"], /* 上傳圖片格式顯示 */"imageCompressEnable": true, /* 是否壓縮圖片,默認(rèn)是true */"imageCompressBorder": 1600, /* 圖片壓縮最長(zhǎng)邊限制 */"imageInsertAlign": "none", /* 插入的圖片浮動(dòng)方式 */"imageUrlPrefix": "http://localhost:9999/ods", /* 圖片訪問(wèn)路徑前綴 */"imagePathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 *//* {filename} 會(huì)替換成原文件名,配置這項(xiàng)需要注意中文亂碼問(wèn)題 *//* {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": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */"scrawlMaxSize": 2048000, /* 上傳大小限制,單位B */"scrawlUrlPrefix": "", /* 圖片訪問(wèn)路徑前綴 */"scrawlInsertAlign": "none",/* 截圖工具上傳 */"snapscreenActionName": "uploadimage", /* 執(zhí)行上傳截圖的action名稱 */"snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */"snapscreenUrlPrefix": "", /* 圖片訪問(wèn)路徑前綴 */"snapscreenInsertAlign": "none", /* 插入的圖片浮動(dòng)方式 *//* 抓取遠(yuǎn)程圖片配置 */"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],"catcherActionName": "catchimage", /* 執(zhí)行抓取遠(yuǎn)程圖片的action名稱 */"catcherFieldName": "source", /* 提交的圖片列表表單名稱 */"catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */"catcherUrlPrefix": "", /* 圖片訪問(wèn)路徑前綴 */"catcherMaxSize": 2048000, /* 上傳大小限制,單位B */"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取圖片格式顯示 *//* 上傳視頻配置 */"videoActionName": "uploadvideo", /* 執(zhí)行上傳視頻的action名稱 */"videoFieldName": "upfile", /* 提交的視頻表單名稱 */"videoPathFormat": "/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */"videoUrlPrefix": "http://localhost:9999/ods", /* 視頻訪問(wèn)路徑前綴 */"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": "/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上傳保存路徑,可以自定義保存路徑和文件名格式 */"fileUrlPrefix": "http://localhost:9999/ods", /* 文件訪問(wèn)路徑前綴 */"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": "/ueditor/jsp/upload/image/", /* 指定要列出圖片的目錄 */"imageManagerListSize": 20, /* 每次列出文件數(shù)量 */"imageManagerUrlPrefix": "http://localhost:9999/ods", /* 圖片訪問(wèn)路徑前綴 */"imageManagerInsertAlign": "none", /* 插入的圖片浮動(dòng)方式 */"imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件類型 *//* 列出指定目錄下的文件 */"fileManagerActionName": "listfile", /* 執(zhí)行文件管理的action名稱 */"fileManagerListPath": "/ueditor/jsp/upload/file/", /* 指定要列出文件的目錄 */"fileManagerUrlPrefix": "http://localhost:9999/ods", /* 文件訪問(wèn)路徑前綴 */"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"] /* 列出的文件類型 */}
4.在圖片上傳的項(xiàng)目(使用ueditor的項(xiàng)目)中的jsp頁(yè)面中引入ueditor的js
5.初始化ueditor,并加入響應(yīng)的修改,修改后的初始化ueditor的語(yǔ)句如下:
二、文件服務(wù)器端項(xiàng)目的編寫(xiě)與配置
1、項(xiàng)目整體配置如下(是一個(gè)最簡(jiǎn)單的spring項(xiàng)目):
其中UeditorController為圖片上傳保存的controller類、CORSFilter為處理出現(xiàn)跨域問(wèn)題的過(guò)濾器、UUIDGenerater是一個(gè)生成沒(méi)有-的UUID的工具類(因?yàn)槲募ㄟ^(guò)url來(lái)下載的話就不能出現(xiàn)中文,所以這里我偷懶直接用uuid來(lái)保存文件名了);files文件是保存上傳的文件的地方。
2.UeditorController中上傳文件的邏輯實(shí)現(xiàn)
import java.io.File; import java.util.HashMap; import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile;import com.emep.ods.util.UUIDGenerater;@Controller @RequestMapping("/ueditor") public class UeditorController {@RequestMapping("/testfile")@ResponseBodypublic Map<String, Object> testFile(@RequestParam(value = "upfile", required = false) MultipartFile file,HttpServletRequest request) {//value的名字一定要叫upfile,這是ueditor寫(xiě)好的參數(shù)名稱String path = request.getSession().getServletContext().getRealPath("files");//獲得files目錄的絕對(duì)路徑String fileName = file.getOriginalFilename();//獲得上傳文件的實(shí)際名稱String[] types = fileName.split("\\.");String type = types[types.length - 1];type = "." + type;//獲得文件的后綴名String targetFileName = UUIDGenerater.generateUUId() + type;File targetFile = new File(path, targetFileName);if (!targetFile.exists()) {targetFile.mkdirs();}try {file.transferTo(targetFile);//保存文件} catch (Exception e) {e.printStackTrace();}// 圖片和文件的返回要求// original: "1.png"// size: "86846"// state: "SUCCESS"// title: "1484710315158045904.png"// type: ".png"// url: "/ueditor/jsp/upload/image/20170118/1484710315158045904.png"Map<String, Object> result = new HashMap<String, Object>();result.put("state", "SUCCESS");// UEDITOR的規(guī)則:不為SUCCESS則顯示state的內(nèi)容result.put("url", "/files/" + targetFileName);result.put("title", file.getOriginalFilename());result.put("original", file.getOriginalFilename());result.put("size", file.getSize());result.put("type", type);return result;} }3.CORSFilter代碼
import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse;public class CORSFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest,ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;httpResponse.addHeader("Access-Control-Allow-Origin", "*");//接收任意域名跨域,當(dāng)然實(shí)際情況要指定幾個(gè)信任的域名httpResponse.addHeader("Access-Control-Allow-Headers", "X_Requested_With");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {} }要在web.xml中把這個(gè)filter加進(jìn)去,怎么加我就不說(shuō)了···
好。到這里就大功告成了,我測(cè)試的結(jié)果如下...
上傳后再ueditor中查看html代碼,發(fā)現(xiàn)圖片的地址是指向文件服務(wù)項(xiàng)目的,然后查看文件服務(wù)項(xiàng)目的files文件夾
ok,就到這里了!
總結(jié)
以上是生活随笔為你收集整理的ueditor跨域上传图片文件(基于jsp框架、tomcat)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: promise基础学习记录
- 下一篇: flume通过tcp/udp采集数据并存