zoukankan      html  css  js  c++  java
  • jeesite ckfinder mac/linux 文件上传路径设置

    背景:

    如果你使用的是Mac 或者 Ubuntu 这种 Unix系统的话,你一定知道Unix系统的文件路径分隔符是 / 而Windows系统文件分隔符是

    当你设置了jeesite.properties 中的 

    userfiles.basedir= D:\workspace\jeesite

    如果不设置,上传的路径会是:dir = ServletContextFactory.getServletContext().getRealPath("/");

    在如果你使用的是Windows操作系统,将来程序也要部署在Windows操作系统上的话,看着这里就可以了,stop,感兴趣的同学可以继续。

     

    thinkGen 这哥们把写了个ckfinder 的配置类

    com.thinkgem.jeesite.common.web.CKFinderConfig

    继承了 

    com.ckfinder.connector.configuration.Configuration

    来完成通过 jeesite.properties 一个配置文件配置整个项目配置。真是考虑的够全面的。但问题来了。

     

    这里如果配置的是绝对的Unix路径的话:比如,/User/jeesite 会被转换为 User/jeesite 的相对路径。

     

    说了这么多如何解决整个问题那?

     

    1.找到:

    com.thinkgem.jeesite.common.utils.FileUtils.java

    修改 path方法:增加15-17行,搞定收工。

    2.测试你的程序吧。

     1 /**
     2      * 修复路径,将 \ 或 / 等替换为 File.separator
     3      * @param path
     4      * @return
     5      */
     6     public static String path(String path){
     7         String p = StringUtils.replace(path, "\", "/");
     8         p = StringUtils.join(StringUtils.split(p, "/"), "/");
     9         if (!StringUtils.startsWithAny(p, "/") && StringUtils.startsWithAny(path, "\", "/")){
    10             p += "/";
    11         }
    12         if (!StringUtils.endsWithAny(p, "/") && StringUtils.endsWithAny(path, "\", "/")){
    13             p = p + "/";
    14         }
    15         if(path.startsWith("/")){
    16             p = "/" + p;
    17         }
    18         return p;
    19     }

     

     

  • 相关阅读:
    POJ
    Parallel Computing–Cannon算法 (MPI 实现)
    POJ
    POJ 2240
    IOS
    iOS
    js遍历map匹配数据和js遍历数组匹配map数据
    vue v-on:click传递动态参数
    vue 权限控制按钮3种样式、内容、以及跳转事件
    vue v-show与v-for同时配合v-bind使用并在href中传递多个参数的使用方法
  • 原文地址:https://www.cnblogs.com/teeup/p/5399857.html
Copyright © 2011-2022 走看看