控制FCKeditor上传图片显示尺寸:
FCKeditor上传的图片太小或者太大,用户自己不想重新调整大小,可以在代码控制大小,让宽度固定,高度随原先的比例缩小或放大
注:这种方法只能改变图片显示时的宽、高,图片文件大小没变
在fckeditor/editor/dialog/fck_image/fck_image.js
找到
GetE('txtWidth').value = oImageOriginal.width ;
GetE('txtHeight').value = oImageOriginal.height ;
改为
if ( oImageOriginal.width <= 500 ) {
GetE('txtWidth').value = oImageOriginal.width ;
GetE('txtHeight').value = oImageOriginal.height ;
} else {
GetE('txtWidth').value = 500 ;
GetE('txtHeight').value = 500 * oImageOriginal.height / oImageOriginal.width ;
}
-----------------------------------------------------------------------------------------
限制FCKeditor上传图片大小:
FCKeditor本身没有对上传文件的大小进行限制,上传大文件可能卡住,解决方法:
打开FileBrowser/FileWorkerBase.cs
找到
if (oFile == null)
{
this.SendFileUploadResponse( 202, isQuickUpload );
return;
}
后面加:
//控制上传文件大小
if (oFile.ContentLength > 200 * 1024)
{
this.SendFileUploadResponse(800, isQuickUpload);
return;
}
重新编译生成DLL
然后打开fckeditor/editor/dialog/fck_image/fck_image.js
找到
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
在switch (errorNumber)语句中加入:
case 800 :
alert( '图片大小超过上限值,请处理后再上传!' ) ;
break ;
-----------------------------------------------------------------------------------------
FCKeditor自定义上传路径:
一个文件夹下面不能存放过多的文件,否则对该目录的访问会严重影响I/O性能。
在项目中想让不同用户用FCK上传的图片放在以用户名ID的文件夹下:
在connector.aspx中加入以下代码就可以了。
/// <summary>
/// 自定义上传路径
/// </summary>
/// <param name="e"></param>
protected override void OnInit(EventArgs e)
{
if (Session["cUser"] == null)
{
Session["FCKeditor:UserFilesPath"] = "~/User/images/";
}
else
{
int userId = (Session["cUser"] as UserInfo).UID;
//为不同用户创建不同目录。
Session["FCKeditor:UserFilesPath"] = "~/User/images/" + userId + "/";
string strPath = Server.MapPath("~/User/images/");
if (strPath[strPath.Length - 1] != '//')
{
strPath += "//";
}
if (!System.IO.Directory.Exists(strPath + userId))
{
System.IO.Directory.CreateDirectory(strPath + userId);
}
}
}
-----------------------------------------------------------------------------------------
自定义文件上传的文件名:
打开FileBrowser/FileWorkerBase.cs
找到
string sExtension = System.IO.Path.GetExtension( oFile.FileName );
sExtension = sExtension.TrimStart('.');//第54行
后面加:
sFileName = DateTime.Now.ToString("yyyyMdhhmsfff") + new Random().Next(100);
sFileName += "." + sExtension.ToLower();
重新编译生成DLL
-----------------------------------------------------------------------------------------
解决上传文件没有权限:
上传图片后页面一直处于进度条状态,并出现脚本错误提示“没有权限”,但实际上图片已经上传成功
同样打开FileBrowser/FileWorkerBase.cs
找到
Response.Write(@"(function(){var d=document.domain;while (true){try{var A=window.top.opener.document.domain;break;}catch(e){};d=d.replace(/.*?(?:/.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();" );
改为:
Response.Write(@"(function(){var d=document.domain;while (true){try{var A=window.top.opener.document.domain;break;}catch(e){};d=d.replace(/.*?(?:/.|$)/,'');if (d.length==0) break;}})();" );
即删除 try{document.domain=d;}catch (e){break;} 这句,重新编译生成DLL
如果使用asp.net 2.0和theme,则需要在
/editor/filemanager/upload/aspx/upload.aspx和/editor/filemanager/browser/default/connectors/aspx/connector.aspx
两个页面的@Page指令中加入属性Theme=""