修改FCKEditor实现将图片、文件等保存到数据库
FCKEditor是开源的富文本编辑器,其免费、跨浏览器跨平台的特点使得其在项目中得到了广泛的应用。但是FCKEditor的附件(文件、图片、Flash等)是上传保存到Web服务器的,在只有一台Web服务器的情况下没有什么太大的问题,但是如果我们的系统有多个Web服务器实现NLB(网络负载均衡),那么用户将附件上传到其中一台Web服务器上保存,其他用户在访问另外一台Web服务器时将无法读取文件。对于这种多Web服务器实现NLB的情况,一般来说,我知道的有4种解决方案: 1,将附件保存到SQL Server服务器上,用户访问任何一台Web服务器都是通过连接到数据库,从数据库中读取数据并传输到用户客户端。 2,将附件保存到共享存储上,也就是说让每台Web服务器都有访问共享存储的权限,用户上传附件时直接上传到共享磁盘,其他Web服务器访问时也是直接读取共享磁盘上的附件。 3,建立一台专门的存储服务器,分配一个专门的域名(比如Files.xxx.com)负责对所有附件进行集中管理。这个方案比较好,在大型和集中的应用中可以使用,不过成本也比较高。 4,在多台Web服务器上开启文件同步的服务,用户上传了附件到一台服务器上,通过文件同步服务将所有新上传的附件同步其他所有Web服务器上,这样就会在每台服务器上保存一个附件的副本,及其浪费空间,而且文件的同步还存在延时和失败的情况。 一般来说,比较简单而且易于管理的是第一种方案,直接将附件存储到数据库中,所有Web服务器都访问数据库来读写文件,而且SQL Server 2008中提供了专门的FILESTREAM功能,用于对附件数据库进行优化和管理。 但是FCKEditor没有提供将文件上传到数据库中保存的配置方法,幸好他是开源的,所以我们可以修改其源代码实现将附件保存到数据库中,经过几天的努力我终于将FCKEditor的修改完成了,下面说一说具体的修改思想和方法,并给出修改后的FCKEditor。 1,首先我们要建立文件数据库用于保存上传的附件,数据库中有2个表,一个文件夹表和一个附件表,具体SQL脚本是: [dbo].[Folders]( [FolderPath] [nvarchar](500) ,() (PAD_INDEX = ,STATISTICS_NORECOMPUTE = ,IGNORE_DUP_KEY = ,ALLOW_ROW_LOCKS = ,ALLOW_PAGE_LOCKS = ) [],() (PAD_INDEX = ,ALLOW_PAGE_LOCKS = ) [] |
- ASP.Net:为什么我的按钮的点击/命令事件没有在转发器中绑定
- asp.net文件上传功能(单文件,多文件,自定义生成缩略图,水印
- asp.net-mvc – ASP.NET MVC会话超时,绝对还是滑动?
- asp.net – 在Azure网站上启用gzip压缩
- asp.net-mvc – 将viewdata传递给asp.net mvc masterpages
- 经典ASP和UTF-8
- asp.net – 通过Web服务访问连接字符串
- asp.net – 如何使用resxresourcewriter写入所有三个值?
- asp.net – Umbraco CMS(.NET):加载xslt /用户控件的日志错
- asp.net-mvc-3 – mvc3在另一个内部嵌入了局部视图
- ASP.NET 根据汉字获取汉字拼音的首字母(含多音字
- asp.net-mvc-3 – 在MVC3中使用Html.LabelFor的表
- asp.net-mvc – ASP.NET MVC V2 – 好友类
- asp.net-mvc – 文件上传MVC
- asp.net – 从启用AJAX的WCF服务返回错误详细信息
- asp.net-mvc – 如何编辑表格数据(ASP MVC)
- 如何重定向到ASP.NET MVC中的调用页面?
- asp.net – 来自WebHttpBinding的WCF服务中的Acc
- 从代码隐藏调用ASP.NET Web API
- asp.net-mvc – asp.net MVC应该是View-Model封装