扩展FCKeditor网页编辑器
-增加上传路径按日期分文件夹
-解决中文乱码问题
有时间补上~纪念一下,第一次改开源文件~
惭愧呀,一年前改的方法,今天又用上,又看了下源码才想起来,赶紧给记上吧,为当年偷懒付出了代价。
打开FCK源代码找到,net.fckeditor.handlers.ResourceTypeHandler,这个类中的
paths.put(FILE, PropertiesLoader.getProperty("connector.resourceType.file.path"));
paths.put(IMAGE, PropertiesLoader.getProperty("connector.resourceType.image.path")+ File.separator + createDir(getNowTimeStr()));
paths.put(FLASH, PropertiesLoader.getProperty("connector.resourceType.flash.path"));
paths.put(MEDIA, PropertiesLoader.getProperty("connector.resourceType.media.path"));
是来确定文件保存路径的,前面 PropertiesLoader.getProperty("connector.resourceType.image.path")显然是从默认的配置文件中来读取默认文件夹,默认配置文件在net/fckeditor/handlers/default.properties
如我上面所改,添加了
PropertiesLoader.getProperty("connector.resourceType.image.path")+ File.separator + createDir(getNowTimeStr()));
那么以后再上传图片类,会自动加上以时间依据创建文件夹的下面,这样更改使用户上传文件更有条理,也可以做更多扩展,下面是建议文件夹代码
public static void createDir(String fullPath)
{
fullPath = fullPath.replaceAll("\\*","/");
String paths[] = fullPath.split("/");
StringBuilder sb = new StringBuilder();
for(int i=0;i<paths.length;i++)
{
sb.append(paths[i]+"/");
File temp = new File(sb.toString());
if (!temp.exists()) {
temp.mkdirs();
}
}
}
public static Date getNowTime()
{
return Calendar.getInstance().getTime();
}
public static String getNowTimeStr()
{
return DateToStr(getNowTime(),"yyyyMM/dd");
}
public static String DateToStr(java.util.Date date,String pattern) {
if( date == null ) return "";
SimpleDateFormat ft = new SimpleDateFormat(pattern);
return ft.format(date);
}
今天又发现一个问题,很多朋友希望将文件自动重命名成日期的形式。
只要修改net.fckeditor.connector.ConnectorServlet中dopost()方法中的
String rawName = UtilsFile.sanitizeFileName(uplFile.getName());
下面添加一个自定义的renameFilename方法即可了。
/System.out.println("--------->rawName: " + rawName);
rawName = renameFilename(rawName);
//方法实现
public String renameFilename(String filename)
{
String suffix = filename.substring(filename.lastIndexOf("."));
return String.valueOf(new Date().getTime()) + suffix;
}