修改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-mvc – 帖子上的Mvc模型ID 0
- asp.net-mvc – LabelFor和TextBoxFor不生成相同的id
- 61条面向对象设计的经验原则 转载
- ASP.NET MVC 4 JSON绑定到视图模型 – 嵌套对象错误
- asp.net – 防止XSS(跨站脚本)
- asp.net – 获得“System.Web.Mvc.Html.MvcForm”一页
- asp.net-mvc – 如何检查是否为浏览器启用了cookie
- asp.net-mvc – 所有请求获取HTTP错误401.2 – 未经授权的响
- asp.net – 如何打破VB.NET中的“if”块