`
liukai
  • 浏览: 702160 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

springMVC下配置fckeditor2.6.6之三fckeditor中文图片上传不了的解决办法

    博客分类:
  • java
阅读更多
在成功把fckeditor整合进springMVC后,上传英文和数字为图片名的图片一切正常,
但是上传以中文命名的图片时页面会出现红叉,可图片的确是成功上传到服务器中的.
这个办法网上有很多,但实践出真知,只有手动才能知道最终的解决办法.

首先我查了网上;大体分两种,一种是通过给tomcat下的server.xml添加编码格式
但是更改后,在我的服务器上,tomcat报错.
这个方法行不通.

然后是通过更改jar包里的代码,使其实现编码的转化和图片名的更改来达到使中文名的图片
也能成功显示的功能.
感谢下面这边blog的作者
http://www.hencuo.com/archives/37

他的方法写的很详细,照着他一步一步的来,能成功的解决图片上传的问题

目前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  *.*
即可获得编辑后的jar包

BTW
附件是我编译后的fckeditor-java-core-2.6.jar包
替换项目里的fckeditor-java-core-2.6.jar包即可

写在最后:
fckeditor整合进springMVC花了我整整3天的时间.
中间碰到了几个难题.但是通过克服这些难题让我学到了很多,也多多少少的获得了一些成就感.

这3天给我最大的感受是中国目前的程序环境不是很理想.
网上虽然有很多的资料,但95%的资料是重复的.
很多都是直接ctr+c,ctr+v.而没有自己动手验证下是否正确.
或者说没有一点点原创的东西.而经过无数转贴后原帖早已不知所踪,想请教原帖作者都无法找到.

对那些能看到这个帖子的朋友
首先希望我的解决方法能解决掉你碰到的问题.
然后也希望在你解决一个问题后能分享出自己的方法.
而不仅仅是google -> 粘贴 -> 拷贝
在分享的过程也是一个自我总结的过程.

分享到:
评论
4 楼 innger 2012-04-30  
lz 你好,我也遇到这个问题,没有这么复杂,
只需要在tomcat 7 里面配置一下URIEncoding = "UTF-8"
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding = "UTF-8"/>
就可以解决中文问题了,
而且我觉得解决中文问题应该 从编码解码入手,而不是避开它
3 楼 iamaj2eeprogrammer 2012-02-03  
    
2 楼 ljjr13 2010-12-31  
一直上传不了图片,怎么回事?
1 楼 1柳梦狂1 2010-10-16  
首先,非常感谢楼主的无私分享,
经过N次的修改本已放弃FCKeditor的我在看到这几帖子后又燃起了希望。
然后BS下那些没经测试就乱贴的**。

相关推荐

Global site tag (gtag.js) - Google Analytics