FckEditor 2.6.4升级手记

说是升级,其实就是把原来的版本替换掉

1.先到www.fckeditor.net上下载fckeditor(html/js包)和fckeditor.net(专用于aspx环境中处理上传的dll包)

2.将fckeditor中"_"开头的文件都删除掉(基本上都是源码和说明性文档,没啥用处)

3.修改fckconfig.js

FCKConfig.DefaultLanguage  = 'zh-cn' ; //改为简体中文 ... var _FileBrowserLanguage = 'aspx' ; // 设置上传处理的服务端语言 var _QuickUploadLanguage = 'aspx' ; // 设置上传处理的服务端语言

4.上传处理

打开 \editor\filemanager\connectors\aspx\config.ascx

修改CheckAuthentication(),这里我改为仅登录后才能上传(当然你可以根据自己的要求来修改,甚至直接返回true都可以,不过这样会有安全问题,任何人都可以直接上传)

private bool CheckAuthentication()
{  
 //return false;      
   return HttpContext.Current.User.Identity.IsAuthenticated; 
}

5.扩展FredCK.FCKeditorV2.dll

默认情况下,fckeditor上传后的文件名是不会自动重命名的,而且默认上传后的文件全部在一个目录下,另外不知道为何,2.6.4中居然去掉了上传文件最大尺寸的限制

好了,一一处理,打开FCKeditor.Net_2.6.3.zip下载包中的解决方案

FileBrowser\FileWorkerBase.cs 修改

protected void FileUpload( string resourceType, string currentFolder, bool isQuickUpload )
{
    HttpPostedFile oFile = Request.Files[ "NewFile" ];

 string sFileName = "";

 if ( oFile == null )
    {
 this.SendFileUploadResponse( 202, isQuickUpload );
 return;
    }

//检测文件大小
int _postFileSize = 0;
if (_postFileSize < 1)
{
if (Request.Cookies["FCKeditor:UserUploadSize"] != null)
{
    _postFileSize = Convert.ToInt32(this.Request.Cookies["FCKeditor:UserUploadSize"].Value);
}

if (_postFileSize < 1)
{

    _postFileSize = Convert.ToInt32(base.Application["FCKeditor:UserUploadSize"]);
 if (_postFileSize < 1)
    {
    _postFileSize = Convert.ToInt32(this.Session["FCKeditor:UserUploadSize"]);
 if (_postFileSize < 1)
    {
        _postFileSize = Convert.ToInt32(ConfigurationManager.AppSettings["FCKeditor:UserUploadSize"]);
 if (_postFileSize < 1)
        {
        _postFileSize = 500;//默认500k大小
        }
    }
    }
}
}


if (oFile.ContentLength > _postFileSize * 1024) 
{
this.SendFileUploadResponse(101, isQuickUpload,"","","上传文件不得超过 " + _postFileSize + " K");
return;
}

 // Map the virtual path to the local server path.
 string sServerDir = this.ServerMapFolder( resourceType, currentFolder, isQuickUpload );

 // Get the uploaded file name.
    sFileName = System.IO.Path.GetFileName( oFile.FileName );
    sFileName = this.SanitizeFileName( sFileName ).ToLower();

 string sExtension = System.IO.Path.GetExtension( oFile.FileName );
    sExtension = sExtension.TrimStart( '.' ).ToLower();

//强制把文件名改成Guid.ext形式(当然你也可以自行另定义规则,比如常用的yyyymmddssffff格式)
sFileName = NewComb().ToString().ToLower() + "." + sExtension;

    ...

}

Config.cs修改

internal void LoadConfig()
{
    DefaultSettings();

 // Call the setConfig() function for the configuration file (config.ascx).
    SetConfig();

//上传目录设置,优化级cookie>session>application>web.config
//Cookie
 // Look for possible UserFilesPath override options.
string userFilesPath = null;
if (HttpContext.Current.Request.Cookies["FCKeditor:UserFilesPath"] != null) 
{
userFilesPath = HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["FCKeditor:UserFilesPath"].Value);
}

// Session
if (userFilesPath == null || userFilesPath.Length == 0)
{                
userFilesPath = Session["FCKeditor:UserFilesPath"] as string;
}

 // Application
 if ( userFilesPath == null || userFilesPath.Length == 0 )
        userFilesPath = Application[ "FCKeditor:UserFilesPath" ] as string;

 // Web.config file.
 if ( userFilesPath == null || userFilesPath.Length == 0 )
        userFilesPath = System.Configuration.ConfigurationSettings.AppSettings[ "FCKeditor:UserFilesPath" ];

 // config.asxc
 if ( userFilesPath == null || userFilesPath.Length == 0 )
        userFilesPath = this.UserFilesPath;

 if ( userFilesPath == null || userFilesPath.Length == 0 )
        userFilesPath = DEFAULT_USER_FILES_PATH;

 // Check that the user path ends with slash ("/")
 if ( !userFilesPath.EndsWith( "/" ) )
        userFilesPath += "/";

    userFilesPath = this.ResolveUrl( userFilesPath );

//改为自动按yyyy/mm/dd格式生成上传目录 
userFilesPath += DateTime.Now.Year.ToString().PadLeft(4, '0') + "/" + DateTime.Now.Month.ToString().PadLeft(2, '0') + "/" + DateTime.Now.Day.ToString().PadLeft(2, '0') + "/";

 this.UserFilesPath = userFilesPath;
}

源代码下载: http://files.cnblogs.com/yjmyzz/fck2.6.4_Full.rar

说明:解压后zip为原始未做任何修改的版本,AspxDemo里为修改过后的示例

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

Zookeeper学习笔记——2 Shell和Java API的使用

ZooKeeper的使用一般都接触不到,因为平时工作甚少直接使用ZK。但是通过手动操作一下ZK,还是能对其中的门道了解各一二。 shell 常用命令 he...

29050
来自专栏ZKEASOFT

纸壳CMS的插件加载机制

纸壳CMS是基于插件化设计的,可以通过扩展插件来实现不同的功能。如何通过插件来扩展,可以参考这篇文章:

12020
来自专栏C# 编程

[C#]使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)

本文为原创文章,如转载,请在网页明显位置标明原文名称、作者及网址,谢谢! 本文主要是使用微软的ILMerge工具将源DLL合并到目标EXE,因此,需要下载以下工...

1.2K00
来自专栏林德熙的博客

win10 uwp HttpClient post错误

进行HttpClient post参数错误 从“Windows.Web.Http.HttpStringContent”转换为“System.Net.Http.H...

10610
来自专栏我和未来有约会

CaseStudy(showcase)布局篇-全屏效果

public Page()         {             InitializeComponent();             App.C...

18960
来自专栏恰童鞋骚年

.NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)

  关于数据一致性的文章,园子里已经有很多了,如果你还不了解,那么可以通过以下的几篇文章去快速地了解了解,有个感性认识即可。

12630
来自专栏王磊的博客

ASP.NET 缓存 Cache

ASP.NET 提供一个功能完整的缓存引擎,页面可使用该引擎通过 HTTP 请求存储和检索任意对象. 缓存的生存期与应用程序的生存期相同,也就是说,当应用程序重...

45350
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用...

21190
来自专栏王磊的博客

缓存通用管理类 + 缓存 HttpContext.Current.Cache 和 HttpRuntime.Cache 的区别

  以前写asp.net时用HttpContext.Current.Cache存缓存很好用,今天写了一个windows服务程序,HttpContext.Curr...

38870
来自专栏张善友的专栏

Quartz.net官方开发指南 第九课: JobStore

JobStore负责保持对所有scheduler “工作数据”追踪,这些工作数据包括:job(任务),trigger(触发器),calendar(日历)等。为你...

26590

扫码关注云+社区

领取腾讯云代金券