FckEditor的图片上传功能,经常要根据不同用户来设置文件夹,因此我将FckEditor的文件进行了修改,在控件的属性中,添加了一个
UserPath属性,放在BasePath属性的后面,以后使用编辑器控件的时候,只要设置一下UserPath就可以了。
修改代码如下:
---- 1、FCKeditor.cs --------
//设置一个私有变量,用以保存ImageBrowerUrl中的地址
private string sImageBrowserUrl = "/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.aspx?UserID=";
//在BsePath属性下面添加一个UserPath属性
[ DefaultValue( "" ) ]
public string UserPath
{
get {
object o = ViewState["UserPath"];
return (o == null ? "" : (string)o);
}
set {
ViewState["UserPath"] = value;
this.ImageBrowserURL = (sImageBrowserUrl + (string)ViewState["UserPath"]);
}
}
---- 2、FileBrowserConnector.cs -------
//添加初始化函数 OnInit
protected override void OnInit(EventArgs e)
{
if (Request.QueryString["UserID"] != null)
{
Session["FCKeditor:UserFilesPath"] = Request.QueryString["UserID"].ToString() ;
}
}
---- 3、FileWorkerBase.cs ----------
//用户目录的私有字段
private string sUserName;
//在UserFilePath属性中添加如下一句话
public string UserFilesPath
{
get
{
// ... ... ... sUserFilesPath 的代码省略,不用动他 //
//通过设置 Session[FCKeditor:UserFilesPath]实现不同用户目录
if (Session["FCKeditor:UserFilesPath"] == null)
{
sUserName = "AllUser";
}
else
{
sUserName = (string)Session["FCKeditor:UserFilesPath"];
}
if(!sUserName.EndsWith("/"))
{
sUserName += "/";
}
return (sUserFilesPath + sUserName);
}
}
---- 4、/FCKeditor/editor/filemanager/browser/default/js 文件夹--------
在这个文件夹中添加一个 ajax.js 文件
---- 5、/FCKeditor/editor/filemanager/browser/default/frmupload.html ----
<script type="text/javascript" src="js/ajax.js"></script>
<script language="javascript" type="text/javascript">
......
//添加删除图片的JS代码
function ajaxFileDelete()
{
var oFrm = window.parent.frames["frmResourcesList"];
var oHid = window.parent.frames["frmResourcesList"].document.getElementById("hidFileName");
var strUrl=oHid.value;
if(strUrl==""){
alert("请选择想要删除的图片!");
}else{
if(confirm("您确定要删除该文件吗?")){
AjaxEval("/FCKeditor/editor/filemanager/upload/aspx/ajaxDelete.aspx?path=" + escape(strUrl) + "&" + Math.random());
}else{
oHid.value = "";
oFrm.Refresh();
}
}
}
</script>
//在HTML部分添加一个图片删除按钮
<input id="btnDelete" name="btnDelete" type="button" value="删除文件" onClick="ajaxFileDelete();" />
---- 6、/FCKeditor/editor/filemanager/upload/aspx/AjaxDelete.aspx ------
建立一个新文件 AjaxDelete.aspx,删掉自动生成的cs文件,修改aspx文件头为:
<%@ Page language="c#" AutoEventWireup="false" Inherits="FredCK.FCKeditorV2.AjaxDelete" %>
---- 7、在FCK.Net源代码中添加一个 AjaxDelete类 ----
namespace FredCK.FCKeditorV2
{
public class AjaxDelete : FileWorkerBase
{
protected override void OnLoad(EventArgs e)
{
if(Request.QueryString["path"]==null)
{
Response.Clear() ;
Response.Write("alert('请选择要删除的文件'); window.parent.frames['frmResourcesList'].document.getElementById('hidFileName').value=''; window.parent.frames['frmResourcesList'].Refresh();");
Response.End();
}
else
{
string filePath=Request.QueryString["path"].ToString();
filePath=Server.UrlDecode(filePath); //针对JS文件中的escape()进行解码
filePath=System.Web.HttpContext.Current.Server.MapPath(filePath);
if(System.IO.File.Exists(filePath))System.IO.File.Delete(filePath);
Response.Clear() ;
Response.Write("window.parent.frames['frmResourcesList'].document.getElementById('hidFileName').value=''; window.parent.frames['frmResourcesList'].Refresh();");
Response.End();
}
}
}
}
------------补充---------
frmresourceslist.html 是图片列表页,修改添加图片的排列在这里进行。
frmupload.html 是图片上传/删除按钮的页面,功能设置在这里进行。
修改代码如下:
---- 1、FCKeditor.cs --------
//设置一个私有变量,用以保存ImageBrowerUrl中的地址
private string sImageBrowserUrl = "/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.aspx?UserID=";
//在BsePath属性下面添加一个UserPath属性
[ DefaultValue( "" ) ]
public string UserPath
{
get {
object o = ViewState["UserPath"];
return (o == null ? "" : (string)o);
}
set {
ViewState["UserPath"] = value;
this.ImageBrowserURL = (sImageBrowserUrl + (string)ViewState["UserPath"]);
}
}
---- 2、FileBrowserConnector.cs -------
//添加初始化函数 OnInit
protected override void OnInit(EventArgs e)
{
if (Request.QueryString["UserID"] != null)
{
Session["FCKeditor:UserFilesPath"] = Request.QueryString["UserID"].ToString() ;
}
}
---- 3、FileWorkerBase.cs ----------
//用户目录的私有字段
private string sUserName;
//在UserFilePath属性中添加如下一句话
public string UserFilesPath
{
get
{
// ... ... ... sUserFilesPath 的代码省略,不用动他 //
//通过设置 Session[FCKeditor:UserFilesPath]实现不同用户目录
if (Session["FCKeditor:UserFilesPath"] == null)
{
sUserName = "AllUser";
}
else
{
sUserName = (string)Session["FCKeditor:UserFilesPath"];
}
if(!sUserName.EndsWith("/"))
{
sUserName += "/";
}
return (sUserFilesPath + sUserName);
}
}
---- 4、/FCKeditor/editor/filemanager/browser/default/js 文件夹--------
在这个文件夹中添加一个 ajax.js 文件
---- 5、/FCKeditor/editor/filemanager/browser/default/frmupload.html ----
<script type="text/javascript" src="js/ajax.js"></script>
<script language="javascript" type="text/javascript">
......
//添加删除图片的JS代码
function ajaxFileDelete()
{
var oFrm = window.parent.frames["frmResourcesList"];
var oHid = window.parent.frames["frmResourcesList"].document.getElementById("hidFileName");
var strUrl=oHid.value;
if(strUrl==""){
alert("请选择想要删除的图片!");
}else{
if(confirm("您确定要删除该文件吗?")){
AjaxEval("/FCKeditor/editor/filemanager/upload/aspx/ajaxDelete.aspx?path=" + escape(strUrl) + "&" + Math.random());
}else{
oHid.value = "";
oFrm.Refresh();
}
}
}
</script>
//在HTML部分添加一个图片删除按钮
<input id="btnDelete" name="btnDelete" type="button" value="删除文件" onClick="ajaxFileDelete();" />
---- 6、/FCKeditor/editor/filemanager/upload/aspx/AjaxDelete.aspx ------
建立一个新文件 AjaxDelete.aspx,删掉自动生成的cs文件,修改aspx文件头为:
<%@ Page language="c#" AutoEventWireup="false" Inherits="FredCK.FCKeditorV2.AjaxDelete" %>
---- 7、在FCK.Net源代码中添加一个 AjaxDelete类 ----
namespace FredCK.FCKeditorV2
{
public class AjaxDelete : FileWorkerBase
{
protected override void OnLoad(EventArgs e)
{
if(Request.QueryString["path"]==null)
{
Response.Clear() ;
Response.Write("alert('请选择要删除的文件'); window.parent.frames['frmResourcesList'].document.getElementById('hidFileName').value=''; window.parent.frames['frmResourcesList'].Refresh();");
Response.End();
}
else
{
string filePath=Request.QueryString["path"].ToString();
filePath=Server.UrlDecode(filePath); //针对JS文件中的escape()进行解码
filePath=System.Web.HttpContext.Current.Server.MapPath(filePath);
if(System.IO.File.Exists(filePath))System.IO.File.Delete(filePath);
Response.Clear() ;
Response.Write("window.parent.frames['frmResourcesList'].document.getElementById('hidFileName').value=''; window.parent.frames['frmResourcesList'].Refresh();");
Response.End();
}
}
}
}
------------补充---------
frmresourceslist.html 是图片列表页,修改添加图片的排列在这里进行。
frmupload.html 是图片上传/删除按钮的页面,功能设置在这里进行。