`

CKEditor 3开启文件上传功能(Servlet实现)

阅读更多

    本文在http://sarin.iteye.com/blog/599056介绍的基础之上进行进一步的研究。 
    在CKEditor中把上传配置给打开,很简单,脚本段改为如下设置: 

Js代码   收藏代码
  1. <script type="text/javascript">  
  2.         CKEDITOR.replace('content',{filebrowserUploadUrl : '/ckeditor/ckeditor/uploader?Type=File',  
  3. filebrowserImageUploadUrl : '/ckeditor/ckeditor/uploader?Type=Image',  
  4. filebrowserFlashUploadUrl : '/ckeditor/ckeditor/uploader?Type=Flash'  
  5.         });  
  6. </script>  


    这里参数我们可以自己设置,加个Type为了区分文件类型,因为都使用同一个Servlet处理。事情没有这么简单,CKEditor毕竟是个复杂的组件,我们这么配置,看看它给我们还原成什么了吧,在FireFox中使用FireBug查看,看到了这些: 
 
    看到了吧,在Type后面它为我们又挂接了几个参数,其中我们需要的是CKEditorFuncNum和file域的name值upload,CKEditorFuncNum这个参数是用来回调页面的,就是上传成功后,页面自动切换到“图像”选项卡。upload参数是servlet获取上传文件用的参数名。其余参数就根据需要进行了。 
    这些参数的名称都是查看源码获得的,不能想当然。有了这些东西后面就好办了,就是文件上传了么。很简单了。这里我们使用apache commons组件中的fileupload和io。 
先看web.xml,我们做些设置。

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.   
  7.     <servlet>  
  8.         <servlet-name>SimpleUploader</servlet-name>  
  9.         <servlet-class>ckeditor.CKEditorUploadServlet</servlet-class>  
  10.         <init-param>  
  11.             <param-name>baseDir</param-name>  
  12.             <param-value>/UserFiles/</param-value>  
  13.         </init-param>  
  14.         <init-param>  
  15.             <param-name>debug</param-name>  
  16.             <param-value>false</param-value>  
  17.         </init-param>  
  18.         <init-param>  
  19.             <param-name>enabled</param-name>  
  20.             <param-value>true</param-value>  
  21.         </init-param>  
  22.         <init-param>  
  23.             <param-name>AllowedExtensionsFile</param-name>  
  24.             <param-value></param-value>  
  25.         </init-param>  
  26.         <init-param>  
  27.             <param-name>DeniedExtensionsFile</param-name>  
  28.             <param-value>  
  29.                 html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|ftl  
  30.             </param-value>  
  31.         </init-param>  
  32.         <init-param>  
  33.             <param-name>AllowedExtensionsImage</param-name>  
  34.             <param-value>jpg|gif|jpeg|png|bmp</param-value>  
  35.         </init-param>  
  36.         <init-param>  
  37.             <param-name>DeniedExtensionsImage</param-name>  
  38.             <param-value></param-value>  
  39.         </init-param>  
  40.         <init-param>  
  41.             <param-name>AllowedExtensionsFlash</param-name>  
  42.             <param-value>swf|fla</param-value>  
  43.         </init-param>  
  44.         <init-param>  
  45.             <param-name>DeniedExtensionsFlash</param-name>  
  46.             <param-value></param-value>  
  47.         </init-param>  
  48.         <load-on-startup>0</load-on-startup>  
  49.     </servlet>  
  50.   
  51.     <servlet-mapping>  
  52.         <servlet-name>SimpleUploader</servlet-name>  
  53.         <url-pattern>/ckeditor/uploader</url-pattern>  
  54.     </servlet-mapping>  
  55.   
  56.     <welcome-file-list>  
  57.         <welcome-file>index.html</welcome-file>  
  58.     </welcome-file-list>  
  59. </web-app>  


    主要是Servlet的初始化参数,规定了文件上传的扩展名规则,就是允许上传的类型和阻止上传的类型。分为File,Image和FLASH三种,这个上传参数的设置是对应的。Debug是设置servlet知否进行debug,默认是关闭的。enabled是设置该servlet是否有效,如果禁止上传,就打成false。还有一个baseDir是设定CKEditor上传文件的存放位置。 
    下面就是实现类了,比较长,但是有详细的注释:

Java代码   收藏代码
  1. package ckeditor;  
  2. import java.io.*;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.*;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.*;  
  7. import org.apache.commons.fileupload.FileItem;  
  8. import org.apache.commons.fileupload.FileItemFactory;  
  9. import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
  10. import org.apache.commons.fileupload.servlet.ServletFileUpload;  
  11. public class CKEditorUploadServlet extends HttpServlet {  
  12.     private static String baseDir;// CKEditor的根目录  
  13.     private static boolean debug = false;// 是否debug模式  
  14.     private static boolean enabled = false;// 是否开启CKEditor上传  
  15.     private static Hashtable allowedExtensions;// 允许的上传文件扩展名  
  16.     private static Hashtable deniedExtensions;// 阻止的上传文件扩展名  
  17.     private static SimpleDateFormat dirFormatter;// 目录命名格式:yyyyMM  
  18.     private static SimpleDateFormat fileFormatter;// 文件命名格式:yyyyMMddHHmmssSSS  
  19.     /** 
  20.      * Servlet初始化方法 
  21.      */  
  22.     public void init() throws ServletException {  
  23.         // 从web.xml中读取debug模式  
  24.         debug = (
分享到:
评论

相关推荐

    CKEditor+CKFinder Java版本的整合

    3. **集成CKFinder**:在CKEditor的配置中,设置`filebrowserBrowseUrl`和`filebrowserUploadUrl`属性,指向CKFinder的URL,以启用文件浏览和上传功能。这样,当用户点击CKEditor中的"插入图像"或"插入链接"按钮时,...

    在web工程中整合ckeditor3.6和ckfinder2.0.2

    配置文件`config.xml`是CKFinder的核心设置,用于定义文件上传路径、权限、大小限制等。例如: ```xml &lt;!-- 将baseURL中的fckeditor替换为你的工程名 --&gt; &lt;baseURL&gt;/fckeditor/userfiles/ &lt;!-- maxSize=0 表示上传...

    jsp中ckeditor+ckfinder整合

    - 修改 **config.xml** 文件中的 `&lt;enabled&gt;` 标签为 `&lt;enabled&gt;true&lt;/enabled&gt;` 以开启文件上传功能。 - 修改 `&lt;baseURL&gt;` 标签以指定文件的上传路径。 #### 三、配置web.xml 接下来需要在项目的 **web.xml** ...

    ckditor在jsp中的使用

    对于图片上传,CKEditor提供了一个内置的文件上传插件,但默认不开启。需要配置`filebrowserBrowseUrl`、`filebrowserUploadUrl`等相关选项,或者使用CKFinder等文件管理器进行集成。 7. **与后端交互**: 当用户...

    技術分享_elFinder1

    5. **HTML5拖放上传**:背景文件上传功能,支持HTML5拖放。 6. **列表和图标视图**:用户可以选择以列表或图标形式查看文件。 7. **键盘快捷键**:提高操作效率。 8. **选择文件/组的方法**:鼠标或键盘的标准选择...

    fckeditor简单实例

    5. **处理文件上传**:如果需要支持文件上传,需要创建一个Java Servlet来处理FCKeditor的POST请求。FCKeditor会将文件内容作为POST请求的一部分发送到服务器。 6. **测试与调试**:最后,运行你的Web应用,测试...

    Java FCKEditor升级版本

    6. **处理文件上传**:FCKeditor支持文件上传功能,需要在服务器端编写处理文件上传的代码,通常使用Servlet或Struts Action来接收上传的文件并保存到服务器。 7. **安全考虑**:在实际应用中,必须注意FCKeditor的...

    在jsp环境中配置使用FCKEditor

    3. **配置web.xml**:打开FCKeditor-2.3/web/WEB-INF/web.xml文件,找到两个`servlet`和`servlet-mapping`的定义。将这两个配置复制到你的项目中的web.xml文件,但需要修改`url-pattern`,将原来的路径改为与你的...

    jsp版ewebeditor 内涵自己总结的错误修改方法

    - **上传设置**:如果涉及文件上传功能,要检查`config.json`或`ewebeditor.config.js`中的上传路径和URL设置,确保服务器可以访问并处理上传请求。 2. **浏览器兼容性**: - EWebEditor主要基于IE浏览器开发,...

    java开源包3

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    JAVA上百实例源码以及开源项目源代码

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    FCKeditor 在JSP上的完全安装.doc

    - 修改`web.xml`文件,确保SimpleUploader的Servlet启用(将enabled参数值设为true),同时设置Connector Servlet的baseDir参数指向文件上传的目录。 4. **添加TLD文件定义**: - 在`web.xml`中添加以下代码以...

    java开源包4

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包1

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包11

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包2

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包6

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包5

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包10

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

Global site tag (gtag.js) - Google Analytics