
正文
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.测试你的程序吧。
/**
* 修复路径,将 \\ 或 / 等替换为 File.separator
* @param path
* @return
*/
public static String path(String path){
String p = StringUtils.replace(path, "\\", "/");
p = StringUtils.join(StringUtils.split(p, "/"), "/");
if (!StringUtils.startsWithAny(p, "/") && StringUtils.startsWithAny(path, "\\", "/")){
p += "/";
}
if (!StringUtils.endsWithAny(p, "/") && StringUtils.endsWithAny(path, "\\", "/")){
p = p + "/";
}
15 if(path.startsWith("/")){
16 p = "/" + p;
17 }
return p;
}







