前言
FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
希望能帮助有同样需求的同仁节省一点时间;也希望各位能指正其中的不足。谢谢。
一、自定义 FCKeditor 的 BasePath
BasePath 即FCKeditor在网站中的相对路径,默认值是 /fckeditor/,最好在Web.config appSettings中对其进行配置:
<add key="FCKeditor:BasePath" value="/FCKeditor_2.6.3/"/>
这样做有诸多优点:
开发环境与生产环境不同,开发环境一般是http://localhost/xxx.com/这种情况下FCKeditor就得放在一个虚拟目录http://localhost/fckeditor/中,若涉及多个网站的开发,而各网站的FCKeditor有差别时,这样显然不是最优;
而且因为物理目录结构与逻辑目录结构不同,也会有发生错误的隐患;
而如果采用Web.config的配置,就可以在开发环境采用不同的配置,FCKeditor的物理路径与生产环境保持一致;
当升级FCKeditor时,只需要将新版本的FCKeditor放在相应版本号的目录里,修改一下配置即可。这样可以解决因为静态资源的客户端缓存问题,不同用户出现不同的错误的问题;
可以直观地看到自己的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/
========================================
还可以针对不同登录的用户,采用不同的上传子目录
Web.config 修改上传子目录的配置,增加%u表示不同用户使用基于其标识不同的上传子目录
<add key="FCKeditor:FolderPattern" value="%u/%y/%m/%d/"/>
FCKeditor_2.6.3\editor\filemanager\connectors\aspx\config.ascx 中增加获取当前登录用户标识的逻辑
public override void SetConfig()
{
#region Bochuh's Modification
// Identifier for logined user
// Leave blank for default user upload folder
LoginedUserIdentifier = "44"; // 这里替换成获取当前登录用户表示的代码
#endregion
// ……此文件中原来的代码
}
这样可以对不同用户,根据其登录后的标识(一般是用户ID),来使用不同的目录进行存储,如:7394/2008/10/21/(7394是当前登录用户的ID)
参考:
%u 代表 当前登录用户的标识
%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是相对路径,如图:
我增加了这个扩展,在Web.config appSettings可以配置上传后图片URL的域名,如:
<add key="FCKeditor:UploadedFilesDomain" value="http://a.cvimg.cn/"/>
如图:
FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
希望能帮助有同样需求的同仁节省一点时间;也希望各位能指正其中的不足。谢谢。
一、自定义 FCKeditor 的 BasePath
BasePath 即FCKeditor在网站中的相对路径,默认值是 /fckeditor/,最好在Web.config appSettings中对其进行配置:
<add key="FCKeditor:BasePath" value="/FCKeditor_2.6.3/"/>
这样做有诸多优点:
开发环境与生产环境不同,开发环境一般是http://localhost/xxx.com/这种情况下FCKeditor就得放在一个虚拟目录http://localhost/fckeditor/中,若涉及多个网站的开发,而各网站的FCKeditor有差别时,这样显然不是最优;
而且因为物理目录结构与逻辑目录结构不同,也会有发生错误的隐患;
而如果采用Web.config的配置,就可以在开发环境采用不同的配置,FCKeditor的物理路径与生产环境保持一致;
当升级FCKeditor时,只需要将新版本的FCKeditor放在相应版本号的目录里,修改一下配置即可。这样可以解决因为静态资源的客户端缓存问题,不同用户出现不同的错误的问题;
可以直观地看到自己的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/
========================================
还可以针对不同登录的用户,采用不同的上传子目录
Web.config 修改上传子目录的配置,增加%u表示不同用户使用基于其标识不同的上传子目录
<add key="FCKeditor:FolderPattern" value="%u/%y/%m/%d/"/>
FCKeditor_2.6.3\editor\filemanager\connectors\aspx\config.ascx 中增加获取当前登录用户标识的逻辑
复制代码 代码如下:
public override void SetConfig()
{
#region Bochuh's Modification
// Identifier for logined user
// Leave blank for default user upload folder
LoginedUserIdentifier = "44"; // 这里替换成获取当前登录用户表示的代码
#endregion
// ……此文件中原来的代码
}
这样可以对不同用户,根据其登录后的标识(一般是用户ID),来使用不同的目录进行存储,如:7394/2008/10/21/(7394是当前登录用户的ID)
参考:
%u 代表 当前登录用户的标识
%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是相对路径,如图:
我增加了这个扩展,在Web.config appSettings可以配置上传后图片URL的域名,如:
<add key="FCKeditor:UploadedFilesDomain" value="http://a.cvimg.cn/"/>
如图:
七、解决上传文件名含有中文的文件时提示 "invalid file type" 的问题
这个问题只需要在Web.config中增加一段配置即可解决:
http://xiazai.jb51.net/201108/yuanma/FCKeditor.Net_2.6.3_20090713.zip
BIN(.NET 2.0): http://xiazai.jb51.net/201108/yuanma/FredCK.FCKeditorV2_20090713.zip
对以下文件的指定行进行了修改,
/FileBrowser/Config.cs line 45, 116, 169
/FileBrowser/FileWorkerBase.cs line 68, 98, 110, 125, 278
所有修改的地方均包含在名为 "ZhuBo's Modification" 的代码块中,也可以通过搜索整个项目中的 "ZhuBo's Modification" 快速看到改动的地方,方便自己的扩展(比如可以设定图片的最大高度)
更新 at 2008-11-11
新增可选的根据用户标识让不同用户使用独自的图片上传子目录,参见上文中“三、自定义文件上传的子目录的格式”的更新部分。
新的源码与dll文件也已更新。
更新 at 2009-07-06
感谢新手中的新手的发现,修正了以下Bug:未配置FCKeditor:FolderPattern,或者FCKeditor:FolderPattern为空时,上传图片成功后的路径中多了一个"/"
更新 at 2009-07-13
图片后缀名为.gif的不做压缩处理,防止动画效果丢失。
BIN(.NET 2.0): http://xiazai.jb51.net/201108/yuanma/FredCK.FCKeditorV2_20090713.zip
对以下文件的指定行进行了修改,
/FileBrowser/Config.cs line 45, 116, 169
/FileBrowser/FileWorkerBase.cs line 68, 98, 110, 125, 278
所有修改的地方均包含在名为 "ZhuBo's Modification" 的代码块中,也可以通过搜索整个项目中的 "ZhuBo's Modification" 快速看到改动的地方,方便自己的扩展(比如可以设定图片的最大高度)
更新 at 2008-11-11
新增可选的根据用户标识让不同用户使用独自的图片上传子目录,参见上文中“三、自定义文件上传的子目录的格式”的更新部分。
新的源码与dll文件也已更新。
更新 at 2009-07-06
感谢新手中的新手的发现,修正了以下Bug:未配置FCKeditor:FolderPattern,或者FCKeditor:FolderPattern为空时,上传图片成功后的路径中多了一个"/"
更新 at 2009-07-13
图片后缀名为.gif的不做压缩处理,防止动画效果丢失。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » FCKeditor .NET的配置、扩展与安全性经验交流
发表评论 取消回复