在asp.net网站下使用fckeditor 和fcfinder (包括修改fcfinder 来使上传文件按时间来命名和按用户分割文件)
2011-06-22 16:44
1171 查看
FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器。它志于轻量化,不需要太复杂的安装步骤即可使用。它能在asp、 asp.net、PHP、JSP等多个平台下使用,并且支持大部分浏览器,所以在它出现的6年时间里,成为了最流行的文字编辑器。
随着技术的发展,很多更新更方便的东西为开发者提供了更大的便利。在这种情况下,FCKeditor团队推出了一个FCKeditor的重写版本——CKEditor。
新版本的CKEditor加载速度更快、更方便使用,在新版本的基础上又一个全新的用户界面,甚至可以让用户精确地自定义颜色。CKEditor经过了重写,提供了丰富而强大的集成和互动的API。该编辑器是完全基于插件的,它可以扩展和所有部件以符合所有需求。
新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder。如果同时需要上传功能,就需要再下载CKFinder(http://www.ckfinder.com/ )。
CKEditor的配置
下面我们看一下在asp.net环境中如何使用新版本的CKEditor和CKFinder。
CKEditor的配置相对FCKeditor来说非常简单。将文件夹拷贝到你的程序目录,然后你只需要在页面中添加js引用:
<script type="text/javascript" src="ckeditor/ckeditor.js" ></script>
然后在页面中就能够使用:
<textarea class="ckeditor" cols="80" id="editor1" name="editor1" rows="10">这里是内容 这样就可以使用了。
在asp.net下,如果想使用后台取得编辑器里的数据,可以这样来做:
<asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine"></asp:TextBox>
<script type="text/javascript">CKEDITOR.replace( '<%= txtContent.ClientID %>' ); </script>
<%= txtContent.ClientID %>是服务器控件被编译过以后在HTML中显示的ID名,这样就可以通过后台调用编辑器中的数据了。
为了减少编辑器的大小,可以删除一些不必要的文件,如把_samples、_source、_tests三个文件夹删除,进入lang文件目录,保留en.js、zh.js、zh-cn.js三个文件,其余的语言文件如果你用不到,可以删除。
CKFinder的配置:
1、把解压后的/ckfinder/夹拷贝到你的web目录下;然后把bin目录下的dll文件拷到你自己的bin目录下。
2、创建一个上传文件的目录。在默认配置的情况下,/ckfinder/userfiles/是上传目录;如果想修改上传目录,修改config.ascx文件中的BaseUrl = "/uploads/",这里是以根目录作为绝对路径的目录,注意以反斜杠结尾。
3、确保你的文件夹能被网络访问写入。在Windows里,给IUSR_<ServerName>用户写权限;CKFinder可以结合 session来判断用户是否有权限进行上传。如果不需要进行用户身份验证,那么修改config.ascx文件里的 CheckAuthentication()函数,直接返回true。要进行身份验证,也是修改这个函数。
4、编辑config.ascx文件。确保你已经正确设置该文件中的设置,并确定CKFinder在里面。
然后测试是否可用,运行下面这个页面:
/ckfinder/_samples/aspx/standalone.aspx
没有意外的就,应该能使用了。
PS:网上一些教程说CKFinder需要付费才能上传,那是放屁。未注册的CKFinder照样可以使用全部功能,只不过在编辑器里放了个LOGO而已。
与CKEditor集成:
按照上面的配置好以后,理论上CKEditor和CKFinder都应该能使用了。但是这个时候CKEditor还不具备上传功能,得把两个东西集成在一起。代码相当简单:
<asp:TextBoxID="txtContent"runat="server"TextMode="MultiLine"></asp:TextBox>
<scripttype="text/javascript">
<!--
// This call can be placed at any point after the
// <textarea>, or inside a <head><script> in a
// window.onload event handler.
// Replace the <textareaid="editor"> with an CKEditor
// instance, using default configurations.
CKEDITOR.replace('<%= txtContent.ClientID %>',
{
filebrowserBrowseUrl: '../ckfinder/ckfinder.html',
filebrowserImageBrowseUrl: '../ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl: '../ckfinder/ckfinder.html?Type=Flash',
filebrowserUploadUrl: '../ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Files',
filebrowserImageUploadUrl: '../ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl: '../ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Flash'
}
);
// -->
</script>
单独使用
function BrowseServer(){
var finder = new CKFinder();
finder.basePath = '../ckfinder/';
finder.selectActionFunction = SetFileField;
finder.popup();
function SetFileField( fileUrl ){ document.getElementById( 'xFilePath' ).value = fileUrl;}
</script>
<input id="xFilePath" name="FilePath" type="text" size="60" />
<input type="button" value="Browse Server" onclick="BrowseServer();" />
fcfinder 的使用 上传文件按时间来命名
查找
_source\Connector\CommandHandlers
文件夹下的===>FileUploadCommandHandler.cs
添加一行代码
sUnsafeFileName = System.IO.Path.GetFileName(oFile.FileName); sFileName = Regex.Replace( sUnsafeFileName, @"[\:\*\?\|\/]", "_", RegexOptions.None ); if ( sFileName != sUnsafeFileName ) iErrorNumber = Errors.UploadedInvalidNameRenamed ;
sFileName = System.DateTime.Now.ToString("yyyyMMddhhmmss") + System.IO.Path.GetExtension(oFile.FileName);//new code
if ( Connector.CheckFileName( sFileName ) && !Config.Current.CheckIsHiddenFile( sFileName ) )
修改完成后从新生成dll文件
按用户名不同选择不同的文件夹
修改config.ascx的下面代码
BaseUrl = "/UPLOAD/"+Session["Admin"]+"/";
随着技术的发展,很多更新更方便的东西为开发者提供了更大的便利。在这种情况下,FCKeditor团队推出了一个FCKeditor的重写版本——CKEditor。
新版本的CKEditor加载速度更快、更方便使用,在新版本的基础上又一个全新的用户界面,甚至可以让用户精确地自定义颜色。CKEditor经过了重写,提供了丰富而强大的集成和互动的API。该编辑器是完全基于插件的,它可以扩展和所有部件以符合所有需求。
新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder。如果同时需要上传功能,就需要再下载CKFinder(http://www.ckfinder.com/ )。
CKEditor的配置
下面我们看一下在asp.net环境中如何使用新版本的CKEditor和CKFinder。
CKEditor的配置相对FCKeditor来说非常简单。将文件夹拷贝到你的程序目录,然后你只需要在页面中添加js引用:
<script type="text/javascript" src="ckeditor/ckeditor.js" ></script>
然后在页面中就能够使用:
<textarea class="ckeditor" cols="80" id="editor1" name="editor1" rows="10">这里是内容 这样就可以使用了。
在asp.net下,如果想使用后台取得编辑器里的数据,可以这样来做:
<asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine"></asp:TextBox>
<script type="text/javascript">CKEDITOR.replace( '<%= txtContent.ClientID %>' ); </script>
<%= txtContent.ClientID %>是服务器控件被编译过以后在HTML中显示的ID名,这样就可以通过后台调用编辑器中的数据了。
为了减少编辑器的大小,可以删除一些不必要的文件,如把_samples、_source、_tests三个文件夹删除,进入lang文件目录,保留en.js、zh.js、zh-cn.js三个文件,其余的语言文件如果你用不到,可以删除。
CKFinder的配置:
1、把解压后的/ckfinder/夹拷贝到你的web目录下;然后把bin目录下的dll文件拷到你自己的bin目录下。
2、创建一个上传文件的目录。在默认配置的情况下,/ckfinder/userfiles/是上传目录;如果想修改上传目录,修改config.ascx文件中的BaseUrl = "/uploads/",这里是以根目录作为绝对路径的目录,注意以反斜杠结尾。
3、确保你的文件夹能被网络访问写入。在Windows里,给IUSR_<ServerName>用户写权限;CKFinder可以结合 session来判断用户是否有权限进行上传。如果不需要进行用户身份验证,那么修改config.ascx文件里的 CheckAuthentication()函数,直接返回true。要进行身份验证,也是修改这个函数。
4、编辑config.ascx文件。确保你已经正确设置该文件中的设置,并确定CKFinder在里面。
然后测试是否可用,运行下面这个页面:
/ckfinder/_samples/aspx/standalone.aspx
没有意外的就,应该能使用了。
PS:网上一些教程说CKFinder需要付费才能上传,那是放屁。未注册的CKFinder照样可以使用全部功能,只不过在编辑器里放了个LOGO而已。
与CKEditor集成:
按照上面的配置好以后,理论上CKEditor和CKFinder都应该能使用了。但是这个时候CKEditor还不具备上传功能,得把两个东西集成在一起。代码相当简单:
<asp:TextBoxID="txtContent"runat="server"TextMode="MultiLine"></asp:TextBox>
<scripttype="text/javascript">
<!--
// This call can be placed at any point after the
// <textarea>, or inside a <head><script> in a
// window.onload event handler.
// Replace the <textareaid="editor"> with an CKEditor
// instance, using default configurations.
CKEDITOR.replace('<%= txtContent.ClientID %>',
{
filebrowserBrowseUrl: '../ckfinder/ckfinder.html',
filebrowserImageBrowseUrl: '../ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl: '../ckfinder/ckfinder.html?Type=Flash',
filebrowserUploadUrl: '../ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Files',
filebrowserImageUploadUrl: '../ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl: '../ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Flash'
}
);
// -->
</script>
单独使用
function BrowseServer(){
var finder = new CKFinder();
finder.basePath = '../ckfinder/';
finder.selectActionFunction = SetFileField;
finder.popup();
function SetFileField( fileUrl ){ document.getElementById( 'xFilePath' ).value = fileUrl;}
</script>
<input id="xFilePath" name="FilePath" type="text" size="60" />
<input type="button" value="Browse Server" onclick="BrowseServer();" />
fcfinder 的使用 上传文件按时间来命名
查找
_source\Connector\CommandHandlers
文件夹下的===>FileUploadCommandHandler.cs
添加一行代码
sUnsafeFileName = System.IO.Path.GetFileName(oFile.FileName); sFileName = Regex.Replace( sUnsafeFileName, @"[\:\*\?\|\/]", "_", RegexOptions.None ); if ( sFileName != sUnsafeFileName ) iErrorNumber = Errors.UploadedInvalidNameRenamed ;
sFileName = System.DateTime.Now.ToString("yyyyMMddhhmmss") + System.IO.Path.GetExtension(oFile.FileName);//new code
if ( Connector.CheckFileName( sFileName ) && !Config.Current.CheckIsHiddenFile( sFileName ) )
修改完成后从新生成dll文件
按用户名不同选择不同的文件夹
修改config.ascx的下面代码
BaseUrl = "/UPLOAD/"+Session["Admin"]+"/";
相关文章推荐
- ASP.NET修改FCKeditor中asp.net上传文件时的命名
- FCKeditor 上传修改,添加对文件的类型以及大小的限制(ASP.NET C#)
- FCKeditor 上传修改,添加对文件的类型以及大小的限制(ASP.NET C#)
- 解决asp.net中使用FckEditor上传文件,中文名称乱码的问题
- 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)
- FCK编辑器的修改——FCKeditor V2.x在asp.net中上传文件自动改名并按年月份保存
- 解决asp.net中使用FckEditor上传文件,中文名称乱码的问题
- ASP.NET中上传多文件时,用日期时间命名新文件,文件丢失问题
- ASP.NET中上传多文件时,用日期时间命名新文件,这不是个好主意。
- ASP.NET FCKeditor 上传修改,添加对文件的类型以及大小的限制
- FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
- Asp.Net 4.5网站使用IIS发布 uploadify插件 上传文件大小问题
- ASP.NET中使用fckeditor上传文件出现“The server didn't send back a proper XML response……”
- asp.net上传文件重命名的方法及IO修改文件名
- 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)
- 前段时间做文件上传控件,找到些关于ASP.NET中文件操作的方法,顺便记录下来,和大家共享。
- ASP.Net 文件上传大小限制解决方案修改IIS7/7.5配置
- asp.net Mvc 使用uploadify 上传文件 HTTP 302 Error
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET 2.0使用FileUpload控件上传文件示例