这里会用到一个extIsAllowed()函数,从src\com\fredck\FCKeditor\uploader\SimpleUploaderServlet.java文件里拷即可。另外,要在init里进行初始化:
allowedExtensions = new Hashtable(3);
allowedExtensions.put("FileExt",stringToArrayList(getInitParameter("AllowedExtensionsFile")));
allowedExtensions.put("FileExt",stringToArrayList(getInitParameter("AllowedExtensionsFile")));
二、二是会浏览硬盘任意目录问题,这个也在ConnectorServlet.java里,这里要限制用户进入指定目录这外的其它目录。
//修复开始
//修复会进入设定上传根目录的上级目录
String curRealDir=currentDir.getCanonicalPath();
String rootPath=getServletContext().getRealPath(baseDir);//网站上传的根目录
String currentRootDir=null;
if(curRealDir.length()>rootPath.length()){
currentRootDir=curRealDir.toString().substring(0,rootPath.length());
}else{
currentRootDir=curRealDir;
}
if(!rootPath.equals(currentRootDir)){
//如果不在配置文件指定的根目录,则将当前根目录固定到指定根目录
currentDir=new File(rootPath);
}
同样,也在SimpleUploaderServlet.java里做限制。以防止上传到非指定目录。
三、原FCKEditor上传文件后,会沿用原文件名,如果有重名,在后面加以1、2...序号,这里,我想将文件按年/月的形式存放,并在下面自动生成image、Flash等目录。而文件名也用时间戳生成。
这里改了ConnectorServlet.java和SimpleUploadServlet.java文件,新建立一个TimeStamp类,用于生成文件名。
这样,在浏览上传和选择上传选项,均会将文件传到如/UserFiles/2006/12/Image/20061213121444.gif的位置。
但这样一来,浏览服务器文件就要出现问题,我的做法是,打开浏览服务器窗口时,自动进入上传文件夹,这里可以看到按年/月分类的结构。修改fckconfig.js文件,如下:
FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=/&Connector=connectors/jsp/connector' ; FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=/&Connector=connectors/jsp/connector' ; FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=/&Connector=connectors/jsp/connector' ;
四、建立文件夹问题
FCKEditor没有限制文件夹名称,什么乱七八糟的名称都可以,可以限制为只能用字母、数字和下划线。建立中文文件夹好象会出错,我们一般也不提倡建立中文文件夹。