ASp.net下fckeditor配置图片上传最简单的方法
发布时间:2023-03-25 02:34:00
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:
看来我不是个喜欢写东西的人,觉得很麻烦。。。
猜你喜欢
- 这段时间常给来面试的同学用《 你是一个职业的页面重构工作者吗? 》中三个部分的不同阶段去做自测,发现很多人都自我感觉良好,给我的回答基本都是
- 比如 <div><img .../></div>想通过对这个div设置透明度来达到调整图片的透明度如果不
- 1、新建独立运行环境,命名为env[root@vultr ~]# mkdir projects # 测试的项目总目录[root@vultr
- 之前看到Amily的一篇文章,用Excel快速实现分列转到行的操做。数据源大致是这样的:基于此,我动起了一个念头:看看如何用Python快速
- “没 Javascript 就会死”的页面通常都会加入 noscript 标签用于提示用户开启脚本支持。 然而在 IE8 下,如果在 nos
- 这篇文章主要介绍了Python文件操作函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 这篇日志完全是看了一篇日志后的启发,原文为: * 的eval和new Function。很少使用new Array的方式来定义数组,没想到ne
- 我们可以通过打开流并写入和读取 HTTP 请求和响应来使用 asyncio 查询网站的 HTTP 状态。然后我们可以使用 asyncio 并
- 前言Matplotlib的可以把很多张图画到一个显示界面,在作对比分析的时候非常有用。对应的有plt的subplot和figure的add_
- 进入主题1.import turtle as timport matht.pensize(3)t.tracer(10)t.hideturtl
- itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机
- 本文实例讲述了PHP实现上传文件并存进数据库的方法。分享给大家供大家参考。具体如下:show_add.php文件如下:<?php &n
- ⭐️ requests的使用(一) 大家好,今天就来说说requests的基础用法。requests是一个很实用的Python H
- 前言随着人工智能的日益火热,计算机视觉领域发展迅速,尤其在人脸识别或物体检测方向更为广泛,今天就为大家带来最基础的人脸识别基础,从一个个函数
- Web2.0时代,体验式营销,体验式网站设计开始走向主流,那么体验式网站到底意味着什么?具体表现在那些地方?周末,根据建站的一点经验和观察,
- 本文实例讲述了Python全局变量用法。分享给大家供大家参考,具体如下:全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量。今
- 1、程序执行代码:#Author by Andy#_*_ coding:utf-8 _*_import os,sys,timeBase_di
- 事实上,当我们向文件导入某个模块时,导入的是
- 很多年以前,面对上古时代遗留的 HTML 发出的腐臭,我捂住鼻子唉声叹气。刚练熟 web 标准的我,恨不得寝其尸食其肉,把一切推翻重来。但经
- 1. 算法描述冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们