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     }

     

     

  • 相关阅读:
    CUDA和cudnn的环境变量设置问题
    zsh-Ubuntu更实用终端
    应用安全
    应用安全
    应用安全
    操作系统
    应用安全
    应用安全
    操作系统
    密码学
  • 原文地址:https://www.cnblogs.com/teeup/p/5399857.html
Copyright © 2011-2022 走看看