`

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 = (
分享到:
评论

相关推荐

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

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java开源包3

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

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

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    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 的...

    java开源包8

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

    java开源包7

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

    java开源包9

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

    java开源包101

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

    Java资源包01

    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