注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

等闲识得东风面,万紫千红总是春!

 
 
 

日志

 
 

FCKeditor的几点重要改进和使用心得  

2009-01-13 15:51:51|  分类: java(B/S) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

以前公司购买过eWebEditor,功能应该还是不错的,但即便到了现在,也还仅是一个IE only的版本,无法满足现在差异化的需求。故前段时间下了最新的FCKeditor2.3.3版本下来(当然了,连带java的integration),demo来看看,发现有几个地方非常不爽:
1、上载的文件,只能放在URL可及的地方(如默认只能放到嵌入应用路径的/UserFiles/下);
2、没有明确的上载视频的按钮;
3、图片、FLASH、附件上载等,步骤多,复杂度高(想想,用户不都是高手)。

怎么办呢,改!

一、第一个就是增加一个FileLocatorServlet,思路很简单:通过这个服务来定位文件,而不是之间产生链接,既是安全的考虑,也是应用集群的一个重要考虑点。而且原来的几个servlet的配置罗嗦且重叠,难以让人产生美感。所谓代码胜千言,通过下面的web.xml大家应该可以看出修理的要点:

  1 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 <? xml version="1.0" encoding="ISO-8859-1" ?>
  2 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
  3 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 <! DOCTYPE web-app
  4 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  5 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd" >
  6 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
  7 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 < web-app >
  8 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客   < display-name > FCKeditor Test Application </ display-name >   
  9 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 10 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  setting the FCKecitor context based parameters  -->
 11 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  baseDir means the root of the uploaded file/image/flash stored 
 12 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             the prefix of 'file:/' means strore in a file system root that cannot get from webapp url
 13 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 14 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > baseDir </ param-name >
 15 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > file:/C:/Temp/FCKeditorUpload/ </ param-value >
 16 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >  
 17 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 18 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 19 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  
 20 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             if the baseDir prefix by 'file:/',please set it.
 21 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 22 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > fileLocator </ param-name >
 23 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > /editor/filemanager/browser/default/service/jsp/filelocator </ param-value >
 24 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >  
 25 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 26 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 27 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  
 28 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             debug setting,true means verbose output to the console.
 29 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 30 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > debug </ param-name >
 31 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > true </ param-value >
 32 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >  
 33 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 34 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 35 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  
 36 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             enabled setting,true means upload enabled.
 37 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 38 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > enabled </ param-name >
 39 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > true </ param-value >
 40 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >  
 41 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 42 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 43 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  
 44 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             encoding,the response encoding of the file/image/flash,default is UTF-8
 45 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 46 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > encoding </ param-name >
 47 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > UTF-8 </ param-value >
 48 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >  
 49 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 50 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 51 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  
 52 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             contentTypeMapping,a map for the response ContentType
 53 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 54 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > contentTypeMapping </ param-name >
 55 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > doc=application/vnd.ms-word
 56 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        |xls=application/vnd.ms-excel
 57 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        |jpg=image/jpeg
 58 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        |gif=image/gif
 59 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        |swf=application/x-shockwave-flash
 60 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        |avi=video/x-msvideo
 61 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         </ param-value >
 62 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >  
 63 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 64 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 65 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  
 66 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             allowedExtensionsFile,the logic is 'Not allowed means deny.'
 67 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 68 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > allowedExtensionsFile </ param-name >
 69 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > doc|xls|pdf|avi </ param-value >
 70 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >  
 71 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 72 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 73 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  
 74 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             allowedExtensionsImage,the logic is 'Not allowed means deny.'
 75 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 76 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > allowedExtensionsImage </ param-name >
 77 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > jpg|gif|png </ param-value >
 78 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >  
 79 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 80 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < context-param >
 81 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         <!--  
 82 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             allowedExtensionsFlash,the logic is 'Not allowed means deny.'
 83 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         -->
 84 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-name > allowedExtensionsFlash </ param-name >
 85 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < param-value > swf|fla </ param-value >
 86 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ context-param >
 87 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 88 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < servlet >
 89 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < servlet-name > Connector </ servlet-name >
 90 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < servlet-class > com.fredck.FCKeditor.connector.ConnectorServlet </ servlet-class >
 91 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < load-on-startup > 1 </ load-on-startup >
 92 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ servlet >
 93 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客    
 94 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < servlet >
 95 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < servlet-name > FileLocator </ servlet-name >
 96 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < servlet-class > com.fredck.FCKeditor.service.FileLocatorServlet </ servlet-class >
 97 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < load-on-startup > 1 </ load-on-startup >
 98 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ servlet >
 99 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
100 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < servlet >
101 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < servlet-name > SimpleUploader </ servlet-name >
102 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < servlet-class > com.fredck.FCKeditor.uploader.SimpleUploaderServlet </ servlet-class >
103 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         < load-on-startup > 1 </ load-on-startup >
104 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     </ servlet >
105 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
106 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客   < servlet-mapping >
107 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < servlet-name > Connector </ servlet-name >
108 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < url-pattern > /editor/filemanager/browser/default/connectors/jsp/connector </ url-pattern >
109 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客   </ servlet-mapping >
110 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客  
111 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客   < servlet-mapping >
112 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < servlet-name > SimpleUploader </ servlet-name >
113 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < url-pattern > /editor/filemanager/upload/simpleuploader </ url-pattern >
114 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客   </ servlet-mapping >   
115 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客  
116 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客   < servlet-mapping >
117 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < servlet-name > FileLocator </ servlet-name >
118 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     < url-pattern > /editor/filemanager/browser/default/service/jsp/filelocator </ url-pattern >
119 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客   </ servlet-mapping >   
120 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
121 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 </ web-app >

连带FCKeditorConfigurations.java一并修理,配置统一且singleton。关键代码为:

 1 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 2 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     /** */ /**
 3 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     * Make the configuration sigleton
 4 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     *  @param  sc
 5 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     *  @return  the static configuration map
 6 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客      */

 7 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     public   static  Map getContextConfigurationsInstance(ServletContext sc) FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
 8 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         if (contextConfigurations == null ) FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
 9 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            initContextConfigurations(sc);
10 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        }

11 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         return  contextConfigurations;
12 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客    }

13 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客    
14 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     /** */ /**
15 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     * Init all the FCKeditor configuration.
16 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     * add by zhengxq
17 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     *  @param  sc
18 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客      */

19 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     private   static   void  initContextConfigurations(ServletContext sc) FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
20 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         if  (debug)
21 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            System.out.println( " \r\n---- FCKeditorConfigurations for java initialization started ---- " );
22 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        
23 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String baseDir  =  sc.getInitParameter( " baseDir " );
24 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String fileLocator  =  sc.getInitParameter( " fileLocator " );
25 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String debugStr  =  sc.getInitParameter( " debug " );
26 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String enabledStr  =  sc.getInitParameter( " enabled " );        
27 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String encoding  =  sc.getInitParameter( " encoding " );
28 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String contentTypeMapping  =  sc.getInitParameter( " contentTypeMapping " );
29 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String AllowedExtensionsFile  =  sc.getInitParameter( " allowedExtensionsFile " );
30 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String AllowedExtensionsImage  =  sc.getInitParameter( " allowedExtensionsImage " );
31 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String AllowedExtensionsFlash  =  sc.getInitParameter( " allowedExtensionsFlash " );
32 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        
33 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        debug  =  ( new  Boolean(debugStr)).booleanValue();
34 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        encoding  =  (encoding == null   ||  encoding.length() == 0 ) ? " UTF-8 " :encoding;
35 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        
36 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         if (baseDir == null   ||  baseDir.length() == 0 ) baseDir  =  defaultBaseDir;
37 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String realBaseDir  =  defaultBaseDir;
38 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         if  (baseDir.startsWith(fileSystemUriPrefix))  FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
39 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            realBaseDir  =  baseDir.substring(fileSystemUriPrefix.length());            
40 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        }
  else   FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
41 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            realBaseDir  =  sc.getRealPath(baseDir);
42 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            fileLocator  =   null ; // no use and should set null
43 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         }

44 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        File baseFile = new  File(realBaseDir);
45 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         if ( ! baseFile.exists()) FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
46 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            baseFile.mkdir();
47 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        }

48 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations  =   new  HashMap();
49 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " baseDir " ,baseDir);
50 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " realBaseDir " ,realBaseDir);
51 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " fileLocator " ,fileLocator);
52 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " debug " ,debugStr);
53 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " enabled " ,enabledStr);
54 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " encoding " ,encoding);
55 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " contentTypeMapping " ,contentTypeMappingToMap(contentTypeMapping));
56 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " allowedExtensionsFile " ,stringToArrayList(AllowedExtensionsFile));
57 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " allowedExtensionsImage " ,stringToArrayList(AllowedExtensionsImage));
58 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        contextConfigurations.put( " allowedExtensionsFlash " ,stringToArrayList(AllowedExtensionsFlash));
59 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        
60 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         if  (debug)
61 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            System.out.println( " \r\n---- FCKeditorConfigurations for java initialization end ---- " );
62 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        
63 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客    }


FileLocatorServlet.java也很简单,无非就是文件的物理定位和文件流的输出:

 1 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 String type  =  request.getParameter( " Type " );
 2 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String fileName  =  request.getParameter( " FileName " );
 3 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
 4 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        String realFilePath  =  config.get( " realBaseDir " +  type  +   " / "   +  fileName;
 5 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        File file  =   new  File(realFilePath);
 6 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客         if  (file.exists())  FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
 7 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            response.setHeader( " Content-Transfer-Encoding " " base64 " );
 8 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            response.setHeader( " Cache-Control " " no-store " );
 9 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            response.setHeader( " Pragma " " no-cache " );
10 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            response.setDateHeader( " Expires " 0 );
11 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            response.setContentType(getContentTypeByFileExt(fileName.substring(fileName.lastIndexOf( " . " ))));
12 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            
13 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            ServletOutputStream out  =  response.getOutputStream();            
14 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            InputStream in  =   new  FileInputStream(file);
15 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            BufferedInputStream bis  =   new  BufferedInputStream(in);
16 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            BufferedOutputStream bos  =   new  BufferedOutputStream(out);
17 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             byte [] buff  =   new   byte [ 2048 ];
18 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             int  bytesRead;
19 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             while  ( - 1   !=  (bytesRead  =  bis.read(buff,  0 , buff.length)))  FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
20 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客                bos.write(buff,  0 , bytesRead);
21 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            }

22 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             if  (bis  !=   null FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
23 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客                bis.close();
24 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            }

25 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             if  (bos  !=   null FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
26 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客                bos.close();
27 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            }

28 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        }
  else   FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
29 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客             throw   new  FileNotFoundException(fileName);
30 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        }

上述改动已经提交给了FCKeditor,如果大家真的有兴趣,可以去找里面我所提交的patch。

二、至于上述的2、3问题,同样,动手即可解决,在此略过。

过程中倒是碰到几个有意思的问题,成了花絮,其实也是使用FCKeditor的一些心得,写写可能还有点意思:
1、如何取得FCKeditor的值?
答案:这是我们常常干的事情:取得这个值并赋值给某个hidden,再合法性检查+submit等。怎么取得呢?这样:

1 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客      var  oEditor  =  FCKeditorAPI.GetInstance('editor') ;
2 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     // Get the editor contents in XHTML.
3 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客      // alert( oEditor.GetXHTML(true) ) ;    // "true" means you want it formatted.
4 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客     document.all( " tip.c_content " ).value = oEditor.GetXHTML( true );

2、如何使得FCKeditor接收tab键?
答案:我们希望界面元素按照外面的安排进行tab切换,但FCKeditor怎么能做到呢?也有办法:

1 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 function  focusIframeOnTab(caller, tabTargetId, callEvent) FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
2 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客                 //  If keypress TAB and not SHIFT+TAB 
3 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客                  if (callEvent.keyCode  ==   9   &&   ! callEvent.shiftKey)
4 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客                    document.getElementById(tabTargetId).contentWindow.focus();
5 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            }

光光有个函数顶个什么用,还要这样:在之前的那个界面元素中加上下面的事件,如使用struts的tag的化,这样就可以了:

FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 < html:text  property ="tip.c_title"  style ="width:450px"  tabindex ="1"  onkeydown ="focusIframeOnTab(this, 'editor___Frame',event);if(!document.all) return false;" />

这点是google了半天最终在FCKeditor的FAQ中找到的,看来以后用开源的软件第一件事情就是看FAQ,错不了!

3、如何希望在FCKeditor加载完毕后做点什么事情?
答案:也很简单,编写自己的FCKeditor_OnComplete函数,如:

FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 function  FCKeditor_OnComplete( editorInstance )  FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {
FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客                window.status 
=  editorInstance.Description ;
FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客            }


4、如果在图片、FLASH等界面中上载了东西后,希望能告诉自己的表单,怎么做?
答案:这个花了我不少看代码和调试时间!其实这里的关键就是如何获取嵌入FCKeditor的那个window,这样就可以了,在对应的js文件(如editor\dialog\fck_image\fck_image.js)中的ok方法的最后加入:

FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客    
// edit by zhengxq
FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客
     try FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {        
FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        
var  obj  =  window.dialogArguments.Editor.parent.document;
FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客        obj.getElementById(
" tip.c_tip_has_pic " ).value  =   " 1 " ;
FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客    }
catch (e) FCKeditor的几点重要改进和使用心得 - 才人 - 我的博客 {}     

关键就是:window.dialogArguments.Editor.parent.document,这个能够找到对应窗口的引用,有了这个,还不会控制吗?!

  评论这张
 
阅读(452)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017