UMeditor上传图片配置

 

 

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字符串了。

执行效果:

 

 

posted @ 2017-08-14 18:06  Youngly  阅读(6677)  评论(2编辑  收藏  举报