asp.net中配置与使用CKEditor编辑器图例

作者:袖梨 2022-06-25

1、官方网站(http://ckso*u*rc*e.com)上下载获得CKEditor和CKFinder的最新版。这里是我上传的我是用的版本及例子。

2、两个文件夹东西真的是很多,内容很全面,但是我们用的的东西不是全部,所以是挑选我们需要的东西添加到项目中去。这个是项目中CKEditor和CKFinder包含文件

3、在前台添加代码

代码如下 复制代码










CssClass="ckeditor" Height="207px" Width="517px">



  

4、CKEditor 本身不自带上传功能,所以需要配合CKFinder才可以实现上传。

    (1)、项目添加引用CKFinder.dll

    (2)、配置CKEditor的config.js (目录:/CKEditor/config.js ) 在CKEDITOR.editorConfig函数里加上,不需要的功能可以去掉

代码如下:

代码如下 复制代码


/*
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ck*ed**itor.com/license
*/

CKEDITOR.editorConfig = function (config) {
// Define changes to default configuration here. For example:
// config.language = 'fr';
// config.uiColor = '#AADC6E';

var ckfinderPath = "/JS"; //注意这个地方的问题,JS是包含CKEditor和CKFinder的文件夹
config.filebrowserBrowseUrl = ckfinderPath + '/ckfinder/ckfinder.html';
config.filebrowserImageBrowseUrl = ckfinderPath + '/ckfinder/ckfinder.html?type=Images';
config.filebrowserFlashBrowseUrl = ckfinderPath + '/ckfinder/ckfinder.html?type=Flash';
config.filebrowserUploadUrl = ckfinderPath + '/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Files';
config.filebrowserImageUploadUrl = ckfinderPath + '/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Images';
config.filebrowserFlashUploadUrl = ckfinderPath + '/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Flash';
};

配置完成后CKEditor 就带有上传功能了,但假如上传图片,flash,以及其他文件时,文件如果用原来文件的名字,可能会出现重名的问题,

所以就要将文件名改为随机文件名。

5、修改CKFinder的源码。CKFinder自带有源码,目录:/CKFinde/_source,打开项目,

(1)、 打开/Settings/ConfigFile.cs文件,修改的地方,请看特殊标记

代码如下 复制代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace CKFinder.Settings
{
public class ConfigFile : System.Web.UI.UserControl
{
public string LicenseName;
public string LicenseKey;
public string BaseUrl;
public string BaseDir;
public bool RandomReName; //随机重命名
public bool SecureImageUploads;
public bool ForceSingleExtension;
public bool CheckDoubleExtension;
public bool CheckSizeAfterScaling;
public bool DisallowUnsafeCharacters;
public string[] HtmlExtensions;
public string[] Plugins;
public Hashtable PluginSettings;

public string DefaultResourceTypes;

private Thumbnails _Thumbnails;
private Images _Images;
private AccessControlManager _AccessControl;
private ResourceTypeManager _ResourceType;

private string[] _HideFolders;
private string[] _HideFiles;

internal Regex HideFoldersRegex;
internal Regex HideFilesRegex;

public string RoleSessionVar;

private static ConfigFile _Current;

public ConfigFile()
{
_Thumbnails = new Thumbnails();
_Images = new Images();
_AccessControl = new AccessControlManager();
_ResourceType = new ResourceTypeManager();

this.HideFolders = new string[ 0 ];
this.HideFiles = new string[ 0 ];

LicenseName = "";
LicenseKey = "";
BaseUrl = "/ckfinder/userfiles/";
BaseDir = "";
RandomReName = true;
ForceSingleExtension = true;
CheckSizeAfterScaling = true;
DisallowUnsafeCharacters = true;
CheckDoubleExtension = true;
DefaultResourceTypes = "";
HtmlExtensions = new string[ 0 ];
Plugins = new string[ 0 ];
PluginSettings = new Hashtable();
RoleSessionVar = "";
}    /*-----后面内容已经省略------------*/
}
}  

  

(2)、打开/Connector/Config.cs文件,

定位60行左右,添加一个属性:
      

代码如下 复制代码

public bool RandomReName

      {

        get { return Settings.ConfigFile.Current.RandomReName; }

      }

(3)、打开/Connector/CommandHandlers/FileUploadCommandHandler.cs文件,添加一句判断代码,下面显示的是部分代码,添加的代码已经标注

代码如下 复制代码

      


using System;
using System.Web;
using System.Text.RegularExpressions;

namespace CKFinder.Connector.CommandHandlers
{
public class FileUploadCommandHandler : CommandHandlerBase
{
public FileUploadCommandHandler()
: base()
{
}
public static string sFileName=null;
public override void SendResponse( System.Web.HttpResponse response )
{
int iErrorNumber = 0;
//string sFileName = "";
string sFilePath = "";
string sUnsafeFileName = "";

try
{
this.CheckConnector();
this.CheckRequest();

if ( !this.CurrentFolder.CheckAcl( AccessControlRules.FileUpload ) )
{
ConnectorException.Throw( Errors.Unauthorized );
}

HttpPostedFile oFile = null;
if ( HttpContext.Current.Request.Files["upload"] != null )
{
oFile = HttpContext.Current.Request.Files["upload"];
}
else if ( HttpContext.Current.Request.Files["NewFile"] != null )
{
oFile = HttpContext.Current.Request.Files["NewFile"];
}
else if ( HttpContext.Current.Request.Files.AllKeys.Length > 0 )
{
oFile = HttpContext.Current.Request.Files[HttpContext.Current.Request.Files.AllKeys[0]];
}

if ( oFile != null )
{
sFileName = oFile.FileName;

if ( Config.Current.CheckDoubleExtension )
sFileName = this.CurrentFolder.ResourceTypeInfo.ReplaceInvalidDoubleExtensions( sFileName );

sUnsafeFileName = sFileName;

if ( Config.Current.DisallowUnsafeCharacters )
sFileName = sFileName.Replace(";","_");

// Replace dots in the name with underscores (only one dot can be there... security issue).
if ( Config.Current.ForceSingleExtension )
sFileName = Regex.Replace( sFileName, @".(?![^.]*$)", "_", RegexOptions.None );

if ( sFileName != sUnsafeFileName )
iErrorNumber = Errors.UploadedInvalidNameRenamed;

if ( Connector.CheckFileName( sFileName ) && !Config.Current.CheckIsHiddenFile( sFileName ) )
{
if ( !Config.Current.CheckSizeAfterScaling && this.CurrentFolder.ResourceTypeInfo.MaxSize > 0 && oFile.ContentLength > this.CurrentFolder.ResourceTypeInfo.MaxSize )
ConnectorException.Throw( Errors.UploadedTooBig );

string sExtension = System.IO.Path.GetExtension( sFileName );
sExtension = sExtension.TrimStart( '.' );
if (Config.Current.RandomReName) //使用随机名
{
sFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + sExtension;
}            /*剩下的部分代码已经省略,详细代码请查看我的项目代码,下载地址为*/          }         }      }
}
} 

4) 重新生成项目,在bin文件夹中,找到CKFinder.dll,对于第一个项目重新添加对于CKFinder.dll的引用,最后一步:打开/ckfinder/config.ascx

   在SetConfig()中,添加一属性:(其实这个加不加都可以的,因为之前有设置默认值,但使用原名时一定要设置为false)

    RandomReName = true;//上传完毕后使用随机文件名

好了,到此已经配置成功了

相关文章

精彩推荐