当前位置: 首页 > 图文教程 > 网络编程 > 网页编辑器 > ASp.net下fckeditor配置图片上传最简单的方法

网页编辑器
FCKeditor 2.0 简化和使用
jsp fckeditor 上传中文图片乱码问题的解决方法
IE8 Fckedit2.6.X不兼容
fckeditor php上传文件重命名的设置
FCKeditor 新闻组件的一些程序漏洞
FckEditor 配置手册中文教程详细说明
Windows Live Writer 实现代码高亮
FckEditor 中文配置手册详细说明
FCKEidtor 自动统计输入字符个数(IE)
nicedit 轻量级编辑器 使用心得
FCKEditor 表单提交时运行的代码
FCKeditor 插件开发 示例(详细版本)
fckeditor 插件实例 制作步骤
fckeditor 插件开发参考文档
fckeditor 常用函数
FCKeditor ASP.NET 上传附件研究
FCKEditor SyntaxHighlighter整合实现代码高亮显示
HTML 编辑器 FCKeditor使用详解
fckeditor 代码语法高亮
eWebEditor 辑器按钮失效 IE8下eWebEditor编辑器无法使用的解决方法

网页编辑器 中的 ASp.net下fckeditor配置图片上传最简单的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-02-27   浏览: 246 ::
收藏到网摘: n/a

fckeditor 的基本配置我就不讲了,讲讲图片上传这块吧; 1. 原先的配置
把 fckeditor/filemanager/connectors 目录删除;
有同学可能会问了,都删除了怎么上传文件?
呵呵。。。
2. 不要引用 FredCK.FCKeditorV2.dll;
因为我都是采用js写的,不采用控件的方式;
其实网上有很多人在尝试往 fckeditor/filemanager/connectors目录下注入,
确实也有人不小心直接把FCK编辑器没有任何配置的情况下传到网上导致中招了;
3. 现在讲正题吧,一般来说我们用FCK的时候并不多,在一个系统里面可能也就几个地方
现在假如我有一个简单的系统,里面有“新闻”发布和,类似“公司简介”单页发布两个地方要用的FCK
我要把所有文章的图片放到 /Article/yyyyMMdd/guid.jpg
把所有单页的图片放到 /Page/yyyyMMdd/guid.jpg
或者说我要把图片按用户存到不同的地方。。。
4.实现
怎么很简单的事情要说清楚需要做这么多铺垫,太麻烦了。。。。!!!
web页面:
代码
复制代码 代码如下:

<form id="form1" runat="server">
<div>
<div>
<asp:TextBox ID="TextBox1" TextMode="MultiLine" runat="server"> </asp:TextBox>
</div>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</div>
</form>

JS:

代码
复制代码 代码如下:

<script src="fckeditor/fckeditor.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function() {
var oFCKeditor = new FCKeditor('<%= TextBox1.ClientID %>');
oFCKeditor.BasePath = 'fckeditor/'
oFCKeditor.Config.ImageUploadURL = "/admin/auploader.aspx";
oFCKeditor.ReplaceTextarea();
}
</script>

这样就搞定了!
不要不相信啊,下面把上传页面的代码简单的写一个吧,对这个也比较重要;
代码
复制代码 代码如下:

protected void Page_Load(object sender, EventArgs e)
{
if (Request.Files.Count > 0)
{
HttpPostedFile file = Request.Files[0];
string path = "/Article/" + System.DateTime.Now.ToString("yyyyMMdd") + "/";
string serverPath = Server.MapPath(path);
string fileName = Guid.NewGuid() + file.FileName.Substring(file.FileName.LastIndexOf("."));
if (!System.IO.Directory.Exists(serverPath))
System.IO.Directory.CreateDirectory(serverPath);
file.SaveAs(serverPath + fileName);
SendFileUploadResponse(0, path + fileName, fileName, "上传成功!");
}
else
{
SendFileUploadResponse(1, "", "", "上传失败!");
}
}
public void SendFileUploadResponse(int isSucceed, string fileUrl, string fileName, string customMsg)
{
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Write("<script type='text/javascript'>");
System.Web.HttpContext.Current.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;}}})();");
System.Web.HttpContext.Current.Response.Write("window.parent.OnUploadCompleted(" + isSucceed.ToString().ToLower() + ", '" + fileUrl + "', '" + fileName + "', '" + customMsg + "');");
System.Web.HttpContext.Current.Response.Write("</script>");
System.Web.HttpContext.Current.Response.End();
}

好了搞定了!
这个上传代码没有做严格的后缀限制,大小限制;因为这个页面路径是我们自己配置的嘛,想怎么写就怎么写了;
甚至你可以根据不同的用户存到不同的地方;
这里需要说明一下 SendFileUploadResponse 方法,其实就是为FCk传回消息;
这里:
System.Web.HttpContext.Current.Response.Write("window.parent.OnUploadCompleted(" + isSucceed.ToString().ToLower() + ", '" + fileUrl + "', '" + fileName + "', '" + customMsg + "');");
对应的是
fckeditor/dialog/fck_image/fck_image.js
代码
复制代码 代码如下:

function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
{
// Remove animation
window.parent.Throbber.Hide() ;
GetE( 'divUpload' ).style.display = '' ;
switch ( errorNumber )
{
case 0 : // No errors
alert( 'Your file has been successfully uploaded' ) ;
break ;
case 1 : // Custom error
alert( customMsg ) ;
return ;
case 101 : // Custom warning
alert( customMsg ) ;
break ;
case 201 :
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
break ;
case 202 :
alert( 'Invalid file type' ) ;
return ;
case 203 :
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
return ;
case 500 :
alert( 'The connector is disabled' ) ;
break ;
default :
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
return ;
}
sActualBrowser = '' ;
SetUrl( fileUrl ) ;
GetE('frmUpload').reset() ;
}

注意到 0 ,是成功,1 是失败,其他的自己看吧。。。。
对了说明一下这里用的是 2.65 版本测试的,如果有其他版本不一样的灵活变通下哈;
总结一下:
1. 在不同的页面配置不同的图片处理路径,如:
oFCKeditor.Config.ImageUploadURL = "/admin/aupload.aspx";
oFCKeditor.Config.ImageUploadURL = "/admin/bupload.aspx";
。。。。
2. FCk 会把图片post到指定的路径,
然后你自己操作图片,按目录存啊还是按当前用户session存随便来;
当然别忘记验证用户的身份在先,没有权限的不要对他客气,直接返回错误,
验证身份示例代码里面没写,自己根据项目自己加吧
3. 一定要返回值告诉FCK你的操作结果,否则会一直死在那里的。。。
PS:
看来我不是个喜欢写东西的人,觉得很麻烦。。。