FCKeditor上传图片共享问题解决方案

    在我参与的这个项目中,使用了FCKeditor作为文本编辑器,该编辑器有图片、Flash等的上传功能,上传的图片和Flash在Web应用的UserFiles文件夹中。我们的这个系统的后台是在政务网上的,有两台服务器进行负载均衡,因此经常会出现在一台机器上上传的图片,在另外一台机器上看不到图片的问题,另外还有一个问题就是该系统的前台展现是在公网上的,数据库通过网闸进行同步,但是图片因为在文件夹中,不能进行同步。为了解决这个问题,我设计了如下方案,并且对该功能进行了实现。

方案描述

    在图片上传的时候,将图片同时上传到数据库中,在展现图片的时候,先判断图片在本地是否存在,如果不存在,则从数据库中将文件下载到对应的目录下再展现。对于文件名的问题,因为文件很可能重名,为了解决文件重名的问题,我直接把文件名替换成了当前日期。各个应用可以配置相应的前缀,避免重复。

实现方案

    FCKeditor通过两个Servlet进行图片上传,分别是com.fredck.FCKeditor.connector.ConnectorServlet和com.fredck.FCKeditor.uploader.SimpleUploaderServlet,对这两个Servlet进行改造,添加两个参数,分别为saveToDatabase和namePrefix。

    saveToDatabase控制是否保存到数据库中,如果设置为true,则将图片上传到数据库中。

    namePrefix为文件名的前缀,用于避免不同的服务器上传文件同名的问题。

    文件下载实现,通过过滤器对UserFiles路径进行过滤,得到文件名之后,检查本地文件是否存在,如果不存在,根据文件名从数据库中查找,如果找到,则下载文件,否则转到默认图片上,提示图片文件不存在。

配置说明

Filter配置

Code

 Servlet配置

Code

数据库表支持(目前只针对Oracle,如果对其他数据库应该也是可以的)

Code

posted on 2009-05-08 09:32  liwp_Stephen  阅读(3427)  评论(0编辑  收藏  举报

导航