fckeditor-java-core-2.6.jar上传中文文件显示问题的解决
目前fckeditor的java版核心jar包最新为:fckeditor-java-core-2.6.jar。其解决了以前版本的创建中文文件和中文目录乱码的bug,但是仍然没有解决中文文件(图片)引用回显得问题。
在fckeditor-java-core-2.5.jar版本之前我们一般只需要重写net.fckeditor.connector.ConnectorServlet中的dopost和doget方法,并在web.xml中重新配置Servle即可,但是在2.5以后的版本中,这两个方法的具体实现却是在Dispatcher中来实现的,因此重写servlet已经不行了。因此我们必须得重写Dispatcher。
1):下载fckeditor-java-2.6-src.zip源文件。
2):在你的工程目录下新建net.fckeditor.connector包,复制fckeditor-java-2.6\java-core\src\main\java\net\fckeditor\connector\Dispatcher.java文件到该包下。
3):编辑该文件 在doGet成员方法下找到:String newFolderNameStr = request.getParameter(“NewFolderName”); 在后面添加
String temp= new String(newFolderNameStr.getBytes(“iso8859-1″),”utf-8″);
newFolderNameStr = temp;
4、修改上传文件的文件名【使名称变为当前时间(也可以使用UUID构造名称)】避免出现中文:
找到doPost方法下的: String fileName = FilenameUtils.getName(uplFile.getName()); 在后面添加
String suffix = fileName.substring(fileName.lastIndexOf(“.”));
Calendar cad = Calendar.getInstance();
fileName = String.valueOf(cad.get(Calendar.YEAR))+String.valueOf(cad.get(Calendar.MONTH))+String.valueOf(cad.get(Calendar.DAY_OF_MONTH))+String.valueOf(cad.get(Calendar.HOUR_OF_DAY))+String.valueOf(cad.get(Calendar.MINUTE))+String.valueOf(cad.get(Calendar.SECOND));
fileName = fileName + suffix;
5、解压fckeditor-java-core-2.6.jar文件,并部署你的项目,在部署后的classes文件夹下找到你编译好的Dispatcher.class文件替换 fckeditor-java-core-2.6.jar解压后的net.fckeditor.connector文件夹下的Dispatcher.class,并且重新打包该文件。
6、重新将新打包生成的fckeditor-java-core-2.6.jar包导入到项目中,重新发布即可
打包步骤:
1、搭建jdk环境:在环境变量的path中将jdk所目录下的bin目录的路径加入到path中(否则在运用jar命令进行打包时会出现不是内部或外部命令的提示)
2、在cmd下cd到替换文件后了的fckeditor-java-core-2.6目录下
3、在命令行输入:jar cvf fckeditor-java-core-2.6.jar *.*即可
附件是修改并打包之后的:fckeditor-java-core-2.6.jar
