如何集成CKFinder(1)

来源:互联网 发布:汉文化复兴 知乎 编辑:程序博客网 时间:2024/05/29 13:23

    在web应用中集成CKFinder的方法基本有两种,一种是利用Javasciprt, 二是结合开发语言特性。这里介绍在jsp环境下的后一种的集成方法。

1. 在官网下载CKFinder for Java, http://cksource.com/ckfinder。解压其中的.war文件(该文件的名字一般是CKFinderJava-版本号,笔者的是2.4)。

2. 将CKFinder下WEB-INF的config.xml复制到你应用下的WEB-INF。

3. 复制CKFinder的WEB-INF下的lib目录到你应用下的WEB-INF\lib。

4. 把解压后的ckfinder放在复制到你应用下与WEB-INF目录平行。(内有lang,plugins,skins,ckfinder.html,ckfinder.js等,可删除_samples等无用的)

其中config是配置信息;lib有很多jar包,包括所需的标签。熟悉JEE开发的读者应该知道,定义了标签库文件后,只要将标签库文件放在WEB-INF路径或其子路径下,JEE的规范会自动加载它,无需配置。

5. 修改web.xml

实际上,你修改的只是ConnectorServlet设置部分。(可参考下载文件的例子配置)

<servlet>
<servlet-name>ConnectorServlet</servlet-name><servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class><init-param><param-name>XMLConfig</param-name><param-value>/WEB-INF/config.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ConnectorServlet</servlet-name><url-pattern>/ckfinder/core/connector/java/connector.java</url-pattern></servlet-mapping>

这上面可以看出,它把config.xml做为servlet的参数加载进去。

当然,也需要对2中的config.xml进行修改。比如<enabled>true</enabled>

另外,你需要去配置文件上传到过滤器。(File Upload Filter)。这里简要解释一下为什么: CKFinder2.1引入了一个新的Flash组件来实现多文件上传,但这会在一种情况下出现Bug,即当你基于会话范围使用了自己的认证方法(重载了checkAuthentication()),使用非IE内核的浏览器上传图片时可能会报错。具体的原因是老式Flash的”Cookie Bug"。有兴趣的可以查阅更细节原因。

在服务器端你只要设置一个FileUploadFilter.

<filter><filter-name>FileUploadFilter</filter-name><filter-class>com.ckfinder.connector.FileUploadFilter</filter-class>        <init-param>              <param-name>sessionCookieName</param-name>              <param-value>JSESSIONID</param-value>        </init-param>        <init-param>              <param-name>sessionParameterName</param-name>              <param-value>jsessionid</param-value>        </init-param></filter><filter-mapping><filter-name>FileUploadFilter</filter-name><url-pattern>/ckfinder/core/connector/java/connector.java</url-pattern></filter-mapping>

分析上面的代码,除了基本的name和class等,我们还发现两个可选的参数,用以帮助识别要被重写的认证Cookie。这两个参数名是会话Cookie的名字,在java中默认是JSESSIONID,和会话路径名,在java默认是jessionid。如果你要使用自定义的配置,并修改了服务器上会话的标识符,你就要重指定。



完成上面后,就可以用标签了。

<%@ taglib uri="http://ckfinder.com" prefix="ckfinder" %>

<ckfinder basePath="" width="" height="'/>

这里有必要解释一下 basePath,它的值也就是我们之前的ckfinder目录下的文件路径。