1. 程式人生 > >UMeditor上傳圖片配置

UMeditor上傳圖片配置

multipart win put urn als subst 輸入提示 upload gin

UMeditor是UEditor的簡潔版,保留了UEditor中常用的功能,在代碼量和加載速度上均有很大的提升。

本文上傳圖片的執行後臺基於jfinal框架。

1、html加載調用的樣式和腳本,為保證圖片能上傳到服務器,此處需要做幾點配置:

  1)window.UMEDITOR_HOME_URL是相對於網站根目錄的相對路徑,為了避免上傳過程中的路徑問題,此處最好做配置

  2)imageUrl 圖片上傳到後臺時,對應的處理方法。

  3)imagePath圖片的網絡路徑,圖片保存時只保存了圖片名稱,顯示時需要做網絡映射,下面的tomcat server.xml中會有相關配置。

 1
<link href="themes/default/css/umeditor.css" type="text/css" rel="stylesheet"> 2 <script type="text/javascript" src="third-party/jquery.min.js"></script> 3 <script type="text/javascript" src="third-party/template.min.js"></script> 4 <script type="text/javascript"
charset="utf-8" src="umeditor.config.js"></script> 5 <script type="text/javascript" charset="utf-8" src="umeditor.min.js"></script> 6 <script type="text/javascript" src="lang/zh-cn/zh-cn.js"></script> 7 8 <!--style給定寬度可以影響編輯器的最終寬度--> 9 <script type="text/plain"
id="myEditor" style="width:1000px;height:240px;"> 10 <p>這裏我可以寫一些輸入提示</p> 11 </script> 12 <script> 13 window.UMEDITOR_HOME_URL = "${base}/back/umeditor/";/** "相對於網站根目錄的相對路徑"**/ 14 var um = UM.getEditor(myEditor, { 15 imageUrl:${base}/back/uploadImages,/**圖片上傳執行action**/ 16 imagePath:/upload/,/**圖片網絡顯示路徑**/ 17 focus: true 18 }); 19 20 </script>

2、後臺處理程序

 1 /**上傳圖片**/
 2     public void uploadImages(){
 3         List<Map<String,Object>> upload=uploadFiles(getRequest(), PropKit.get("upload_path"), 10, "", "gif,jpg,jpeg,png,bmp");
 4         renderJson(JsonKit.toJson(upload.get(0)));
 5     }
 6   private static FileRenamePolicy fileRenamePolicy = new DefaultFileRenamePolicy();
 7     /**
 8      * 
 9      * @param request 文件上傳請求
10      * @param uploadPath 文件上傳路徑
11      * @param maxPostSize 文件傳輸最大大小(MB)
12      * @param encoding 字符編碼集設置(默認utf-8)
13      * @param filetype 上傳文件格式(擴展名與擴展名間用","隔開,擴展名前沒有".")
14      * @return 上傳的文件名及文件路徑
15      */
16     public static List<Map<String,Object>> uploadFiles(HttpServletRequest request,String uploadPath,int maxPostSize,String encoding,String filetype){
17         
18         encoding=encoding==null||"".equals(encoding)?"utf-8":encoding;
19         
20         File dir = new File(uploadPath);
21         if ( !dir.exists()) {
22             if (!dir.mkdirs()) {
23                 throw new IllegalArgumentException("文件路徑無法創建");
24             }
25         }
26         
27         List<Map<String,Object>> uploadFileDatas=new ArrayList<Map<String,Object>>();
28         
29         try {
30             MultipartRequest multipartRequest = new  MultipartRequest(request, uploadPath, maxPostSize*1024*1024, encoding, fileRenamePolicy);
31             Enumeration<?> files = multipartRequest.getFileNames();
32             while (files.hasMoreElements()) {
33                 String name = (String)files.nextElement();
34                 String filesystemName = multipartRequest.getFilesystemName(name);
35                 // 校驗文件格式
36                 if (filesystemName != null) {
37                     Map<String, Object> ulfd=new HashMap<String,Object>();
38                     if(checkFileType(filesystemName.substring(filesystemName.lastIndexOf(".")+1),filetype)){
39                         ulfd.put("parameterName", name);
40                         ulfd.put("uploadPath", uploadPath+System.getProperty("file.separator")+filesystemName);//圖片的物理路徑
41                         ulfd.put("url", filesystemName);
42                         ulfd.put("originalFileName", multipartRequest.getOriginalFileName(name));
43                         ulfd.put("contentType", multipartRequest.getContentType(name));
44                         ulfd.put("state", "SUCCESS");
45                     }else{
46                         new File(uploadPath+"/"+filesystemName).delete();
47                         ulfd.put("state", "文件格式非法");
48                     }
49                     uploadFileDatas.add(ulfd);
50                 }
51             }
52         } catch (Exception e) {
53             throw new RuntimeException(e);
54         }
55         return uploadFileDatas;
56     }
57     
58     private static boolean checkFileType(String extension,String filetype){
59         filetype=(filetype==null?"":filetype);
60         String[] types=filetype.split(",");
61         for(int i=0;i<types.length;i++){
62             if(!extension.trim().toLowerCase().equals(types[i].trim().toLowerCase())){
63                 break;
64             }else if(i==types.length-1){
65                 return false;
66             }
67         }
68         return true;
69     }

tomcat server配置

<Context docBase="D:/webapps/upload/ssmt" path="/upload" reloadable="true" />

項目配置文件

upload_path=D:/webapps/upload/ssmt

js腳本中也要做更改

技術分享技術分享

此圖中紅色框框是原來的代碼,做測試時發現得到的返回值外面多了一層<pre></pre>,不知道哪裏加上的,改成下方一行代碼後就能獲取到正確的json字符串了。

執行效果:

技術分享

技術分享

技術分享

UMeditor上傳圖片配置