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

    执行效果:

     

  • 相关阅读:
    使用C#调用Java带MIME附件WebService方法的初步设想
    到底是哪里给我插的广告?
    jQuery mobile X天教程 目录
    让ksoap支持wsse加密的soap报文
    第一天 认识jQuery mobile 框架,资源,书籍
    谈谈去那里找开源项目
    第二天 jQuery mobile 的Page&Dialogs,Toolbars,Button,listView全接触
    增强型MonkeyRunner 脚本计划
    以前我喜欢盗版,但是,我现在痛恨盗版
    android Handler 机制研究学习笔记
  • 原文地址:https://www.cnblogs.com/Youngly/p/7359421.html
Copyright © 2020-2023  润新知