我所用的FCKEditor 是 fckeditor-java-demo-2.4.zip压缩包
源文件:fckeditor-java-2.4-src.zip
看了一下FCKEditor代码,FCKEditor 多用户上传路径实现其实非常简单。
一、实现net.fckeditor.requestcycle包下两个接口 UserPathBuilder
其中UserPathBuilder这个接口有这样个函数
public String getUserFilesPath(HttpServletRequest request)
是取自定义路径的
UserAction这个接口是验证用户是否有权浏览与上传。这个不多说,自己去实现。
public class UserPathBuilderImpl implements UserPathBuilder {
// 虚拟目录设置
//实际的路径
public String getUserFilesAbsolutePath(HttpServletRequest request) {
StringBuffer userFilesPathBuffer = new StringBuffer();
// 获得定义connector.userFilesPath的值
String path = PropertiesLoader.getProperty("connector.userFilesPath");
userFilesPathBuffer.append(path);
userFilesPathBuffer.append("/");
CurrentUser user = (CurrentUser) request.getSession().getAttribute(
"user");
String userPath = "userDefault";
if (user != null) {
userPath = String.valueOf(user.getId());
}
userFilesPathBuffer.append(userPath);
return userFilesPathBuffer.toString();
}
// FCK目录设置
//读取的路径
public String getUserFilesPath(HttpServletRequest request) {
StringBuffer userFilesPathBuffer = new StringBuffer();
String context = request.getContextPath();
userFilesPathBuffer.append(context);
// 获得定义connector.userFilesPath的值
String path = PropertiesLoader.getProperty("connector.userFilesPath");
userFilesPathBuffer.append(path);
userFilesPathBuffer.append("/");
CurrentUser user = (CurrentUser) request.getSession().getAttribute(
"user");
String userPath = "userDefault";
if (user != null) {
userPath = String.valueOf(user.getId());
}
userFilesPathBuffer.append(userPath);
return userFilesPathBuffer.toString();
}
}
二、修改你工工程src目录下fckeditor.properties这个文件
将connector.userActionImpl与connector.userPathBuilderImpl这个属性修改成你实现了这两个接口的全类名
connector.userActionImpl=net.fckeditor.requestcycle.impl.EnabledUserAction
connector.userPathBuilderImpl=com.ids.project.knowledge.action.UserPathBuilderImpl
connector.userFilesPath =/userfiles