艾伟:FCKeditor 配置、扩展

简介: 一、自定义 FCKeditor 的 BasePathBasePath 即FCKeditor在网站中的相对路径,默认值是 /fckeditor/,最好在Web.config appSettings中对其进行配置:这样做有诸多优点:开发环境与生产环境不同,开发环境一般是http://localhost/xxx.

一、自定义 FCKeditor 的 BasePath

BasePath 即FCKeditor在网站中的相对路径,默认值是 /fckeditor/,最好在Web.config appSettings中对其进行配置:

< add  key ="FCKeditor:BasePath"  value ="/FCKeditor_2.6.3/" />


这样做有诸多优点:

  1. 开发环境与生产环境不同,开发环境一般是http://localhost/xxx.com/这种情况下FCKeditor就得放在一个虚拟目录http://localhost/fckeditor/中,若涉及多个网站的开发,而各网站的FCKeditor有差别时,这样显然不是最优;
    而且因为物理目录结构与逻辑目录结构不同,也会有发生错误的隐患;
    而如果采用Web.config的配置,就可以在开发环境采用不同的配置,FCKeditor的物理路径与生产环境保持一致;
  2. 当升级FCKeditor时,只需要将新版本的FCKeditor放在相应版本号的目录里,修改一下配置即可。这样可以解决因为静态资源的客户端缓存问题,不同用户出现不同的错误的问题;
  3. 可以直观地看到自己的FCKeditor的版本号。


二、配置文件上传的目录

FCKeditor的文件上传(如图片上传)目录可以通过Web.config appSettings进行配置,如:

< add  key ="FCKeditor:UserFilesPath"  value ="/UploadFile/FCKeditor/" />


也可以在 /FCKeditorBasePath/editor/filemanager/connectors/aspx/config.ascx 中进行配置,但我建议 FCKeditor 目录中的内容能不改就不改(fckconfig.js除外),这样日后升级可以放心地替换即可。


三、自定义文件上传的子目录的格式

我们知道,一个文件夹下面不能存放过多的文件(据称Windows下面的目录下2000为阈值),否则对该目录的访问会严重影响I/O性能。而FCKeditor的文件存储是在单一的一个目录进行的。我对FCKeditor进行了扩展,可以在Web.config appSettings对存储目录的格式自定义,如:

< add  key ="FCKeditor:FolderPattern"  value ="%y/%m-%d/" />


以今天的日期为例:这样产生的文件上传子目录格式为:2008/10-21/。
年月日格式的目录可以随意组合,如:

< add  key ="FCKeditor:FolderPattern"  value ="%y/%m/%d/" />


这样产生的文件上传子目录变成了2008/10/21/

参考:

  • %y    代表 当前时间的年份
  • %m    代表 当前时间的月份
  • %d    代表 当前时间的日


四、自定义文件上传的文件名格式

FCKeditor对文件名的处理规则是:如果当前目录下没有重名文件,则上传后的文件名与用户PC上的文件名一致;若存在n个重名文件,则加入用户PC上的文件名是Example.xxx,上传后的文件名变为:Example(n).xxx

我的项目里要求对用户上传的文件名变成Guid的格式,所以我对FCKeditor也做了扩展,在Web.config appSettings可以对上传后文件的格式自定义,如:

 

< add  key ="FCKeditor:FilenamePattern"  value ="%guid.%extl" />


这样的文件名如:a299e63a-7d2d-493d-bbb9-99162ef5b6b8.gif

参考:

  • %guid    代表 一个新的guid字符串
  • %fnl    代表 源文件名的小写
  • %fnu    代表 源文件名的大写
  • %extl    代表 源文件扩展名的小写
  • %extu    代表 源文件扩展名的大写


五、对上传图片进行缩放处理

用到FCKeditor图片上传功能的场景中,很多是内容的发表。内容中往往不需要几千像素大小的图片,比如我的项目中,文章区域最宽也就560像素,所以我做了一个扩展,在Web.config appSettings中可以对图片的最大宽度进行自定义:

< add  key ="FCKeditor:MaxWidthOfUploadedImg"  value ="560" />


有了这段配置,上传后的图片的宽度都控制在了560像素及以内


六、自定义上传后图片URL中的域名

为了加快页面的渲染,我们可以把图片等静态资源放在一个独立的域名当中。但FCKeditor默认的图片上传后URL是相对路径, 如:/fck/2008-03-01/1.jpg:

我增加了这个扩展,在Web.config appSettings可以配置上传后图片URL的域名,如:

< add  key ="FCKeditor:UploadedFilesDomain"  value ="http://www.aa.com/" />

图片地址就变成绝对地址了,形式如: :http:www.aa.com/fck/2008-03-01/1.jpg


七、解决上传文件名含有中文的文件时提示 "invalid file type" 的问题

这个问题只需要在Web.config中增加一段配置即可解决:

< location  path ="FCKeditor_2.6.3/editor/filemanager/connectors/aspx/upload.aspx" >
    
< system.web >
        
< globalization  requestEncoding ="utf-8"  responseEncoding ="gb2312" />
    
system.web>
location>


注意:

  1. responseEncoding是网站的默认编码
  2. FCKeditor_2.6.3是FCKeditor的BasePath


八、FCKeditor的安全性

在FCKeditor的2.3.2版本里,曾有一个漏洞,可以通过 /editor/filemanager/browser/default/connectors/aspx/connector.aspx 往服务器上传任意文件,我的网站就曾经中招。

2.6.3虽然暂未发现类似的问题,但一般情况下用不到的文件最好还是删除比较好:

  1. FCKeditor BasePath 根目录中除了保留:
    1. /editor
    2. /fckconfig.js
    3. /fckpackager.xml
    4. /fckstyles.xml
    5. /fcktemplates.xml
    6. /license.txt
    外,全部删除
  2. /editor/filemanager/中除了保留:
    1. /connectors/aspx/config.ascx
    2. /connectors/aspx/upload.aspx
    外,全部删除
  3. 删除 /editor/_source/
  4. /editor/filemanager/connectors/aspx/config.ascx 的 CheckAuthentication() 方法中,增加验证用户是否登录的逻辑

注意:以上措施仅适用于ASP.NET的网站,其他语言版本的网站未考虑。

目录
相关文章
|
4月前
|
存储 搜索推荐 前端开发
SpringBoot框架+原生HTML云端SaaS服务方式的电子病历编辑器源码
一体化电子病历系统基于云端SaaS服务的方式,采用B/S(Browser/Server)架构提供,覆盖了医疗机构电子病历模板制作到管理使用的整个流程。除实现在线制作内容丰富、图文并茂、功能完善的电子病历模板外,还可按照医疗机构的特色,根据不同业务的需求,使用该系统定制个性化、实用化、特色化电子病历模板。 该系统能对电子病历模板进行统一集中管理,通用的电子病历模板能直接提供给不同的医疗机构直接使用,避免重复制作;提供了功能齐备的控件元素,实现电子病历在业务使用中数据的自动获取功能,简化了人工的大量填报。
|
Linux API 开发工具
|
开发者
Google浏览器中扩展插件方法
Google浏览器中扩展插件方法
297 0
Google浏览器中扩展插件方法
|
Java Spring
编程小技巧7-配置文件自动提示功能消失解决方案
编程小技巧7-配置文件自动提示功能消失解决方案
编程小技巧7-配置文件自动提示功能消失解决方案
|
移动开发 HTML5
界面绝佳、体验超棒的HTML5上传插件zyUpload
好插件推荐 插件描述:支持多图片上传、拖拽上传、剪辑、编辑,上传预览,编辑获取默认值等功能,并且每一个功能对应一个demo,简单易懂,方便学习修改 多图上传预览 图片发自简书App 删除 图片发自简书App 拖拽上传 图片发自简书App 插件下载 :http://www.
1381 0
|
Java 应用服务中间件 nginx
百度编辑器(ueditor)不支持上传图片到独立服务器?
百度编辑器(ueditor)不支持上传图片到独立服务器?http://www.bieryun.com/1596.html 项目用到了百度编辑器,感觉很高大上,突然发现这货上传的图片时,它总会放到当前项目的目录下,它的配置文件config.json 这里这个imagePathFormat就是保存路径了,它会默认在这个路径前面拼上一个根目录,所以你传的文件都被放在根目录下。
2744 0
|
JavaScript 前端开发 PHP
【ci框架基础】之部署百度编辑器
在ci框架下加载编辑器,现在复习下内容。我的框架文件名称为ci   1.下载百度编辑器ueditor,http://ueditor.baidu.com/ 一般情况下下载ubuilder版即可,并将ueditor复制到ci框架的根目录下。
1167 0