FckEditor 2.6.4升级手记

简介: 说是升级,其实就是把原来的版本替换掉 1.先到www.fckeditor.net上下载fckeditor(html/js包)和fckeditor.net(专用于aspx环境中处理上传的dll包) 2.


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

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;
}
 
说明:解压后zip为原始未做任何修改的版本,AspxDemo里为修改过后的示例
目录
相关文章
|
传感器 人工智能 自动驾驶
构建未来:利用AI技术优化城市交通系统
【4月更文挑战第27天】 随着城市化的快速发展,交通拥堵已成为全球城市的普遍问题。本文探讨了人工智能(AI)技术在缓解城市交通压力、提升交通效率方面的应用前景。通过分析智能信号控制、交通流量预测、自动驾驶车辆以及公共交通优化等关键技术的实际案例,评估了AI在现代交通系统中的潜力与挑战。本研究不仅展示了AI技术在改善城市交通中的有效性,同时也指出了实施过程中需要克服的技术和社会障碍。
|
C++
【C/C++ 编程 入门篇】 if条件判断表达式的使用教程
https://developer.aliyun.com/article/1465430
524 0
|
安全 量子技术 数据安全/隐私保护
解密未来:量子加密技术在信息安全领域的革新展望
【10月更文挑战第28天】信息安全是现代社会的重要组成部分,量子加密技术作为新兴手段,利用量子力学原理,为信息安全带来革命性变革。本文介绍量子密钥分发(QKD)的基本原理,并通过代码示例展示其实际应用潜力。量子加密具有无条件安全、抗量子计算攻击等优势,未来有望成为保护信息安全的重要工具。
605 6
|
人工智能 算法 安全
智能时代的伦理困境
随着人工智能技术的迅猛发展,人类社会正面临着前所未有的伦理挑战。本文将深入探讨AI技术所带来的隐私泄露、数据安全、偏见与歧视以及失业问题等四大伦理困境,并从法律、政策和个人隐私保护等方面提出应对策略。同时,通过分析具体的AI应用案例,揭示伦理问题的复杂性和紧迫性,以期在技术与道德之间找到平衡点,确保AI技术的发展造福于全人类。
|
弹性计算 运维 负载均衡
构建高可用性的分布式系统:技术与策略
【7月更文挑战第1天】构建高可用分布式系统涉及负载均衡、容错处理和数据一致性等关键技术,遵循冗余、模块化及异步设计原则,并通过监控告警、自动化运维和弹性伸缩策略确保稳定性。
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习参数初始化(一)Xavier初始化 含代码
深度学习参数初始化(一)Xavier初始化 含代码
810 2
|
算法 安全 数据挖掘
解锁编程之门:数论在算法与加密中的实用应用
解锁编程之门:数论在算法与加密中的实用应用
|
域名解析 编解码 网络协议
【实操手册】一篇文章教你快速开始使用视频点播
阿里云视频点播(VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速、视频播放于一体的一站式音视频点播解决方案。 用户可以通过阿里云管理控制台进行基本和高级 VoD 配置、操作,还可以通过视频点播开发工具包(SDK)或直接在应用程序中进行 RESTful API 调用执行基本和高级 VOD任务。
4554 0
|
存储 算法 JavaScript
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(二)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
489 0
|
前端开发 JavaScript API
交互设计:隐藏或显示大段文本的UI组件有哪些?
应用场景: 在手机上要给列表中的每一项添加一个大段的介绍,应该用什么UI组件 A: 这里可以用,模态对话框,弹出提示,工具提示这类组件。模态对话框的好处,就是用关闭的按钮,用户操作方便;而弹出提示和工具提示只能通过点击来切换   模态对话框: http://v2.bootcss.com/javascript.html#modals http://www.runoob.com/bootstrap/bootstrap-modal-plugin.html Bootstrap 模态框(Modal)插件 模态框(Modal)是覆盖在父窗体上的子窗体。
1829 0

热门文章

最新文章