fckeditor确实好用啊,到处都在用,连baidu都在用,所以第一次搞html编辑器就用了它,但它总是不争气,第一次是cdgyy网站被加注了很多脚本病毒文件,当时没有详细配config文件,所以路径完全暴露无疑,上传限制条目也没有维护,而fckeditor地的上传管理器又可以绕过身份认证访问到,后果可想而知,后来学校招生网也被黑了,虽然fckeditor的配置基本都处理过了,但是上传管理器等文件依然可以绕过认证,所以依然怀疑是不是fckeditor的某个问题。

      今天突然有个用户说网站fckeditor编辑器里上传的图片想删除,怎么办?我当时说管理器里应该有的,你找找看,后来发现竟然没有。。。晕了,fckeditor真的太不完善了,看来baidu确实是做了很多扩展的。。于是,自己加上删除吧。。网上asp,php版的不少,aspx的倒很少,how?参考网上背菜刀的诗人的方法并整理:

   1.修改\fckeditor\editor\filemanager\browser\default\frmresourceslist.html

修改函数oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )如下:

?View Code JAVASCRIPT
        oListManager.GetFileRowHtml = function(fileName, fileUrl, fileSize) {
 
            var sLink = '<a href="#" onclick="OpenFile(\'' + ProtectPath(fileUrl) + '\');   return false;">';
            var sIcon = oIcons.GetIcon(fileName);
            return '<tr>' + '<td width="16">' + sLink + '<img alt="" src="images/icons/' + sIcon +
   '.gif" width="16" height="16"  border="0"> <\/a>' +
       '<\/td><td>&nbsp;' + sLink + fileName + '<\/a> <a href="#" onclick="deleteFile(\'' + ProtectPath(fileUrl) + '\');" style="color: #FF9933;"> 删除 <\/a>' + '<\/td><td align="right" nowrap>&nbsp;' + fileSize + ' KB' + '<\/td><\/tr>';
        }

其实就是在最后加个td里面放上个删除按钮。

  2. 在该文件中加入如下代码:

?View Code JAVASCRIPT
        //产生不重复的随机数
        var rn = Math.ceil(Math.random() * 1000000);
        var rnch = rn;
        function rndnum() {
            while (rn == rnch) rn = Math.ceil(Math.random() * 1000000);
            rnch = rn;
            return rn;
        }
        // 删除文件
        function deleteFile(file) {
            var xml = new ActiveXObject("MSXML2.XMLHTTP");
            xml.open("get", "FCKdel_file.aspx?filePath=" + escape(file) + "&UD=" + rndnum(), false);
            xml.send();
            Refresh();
            switch (xml.responseText) {
                case "1": alert("文件删除成功!");
                    break;
                case "0": alert("文件删除失败!请检查文件是否存在!");
                    break;
                case "-1": alert("您不是系统管理员,无权进行操作!");
                    break;
                default: alert("未知错误!");
                    break;
            }
        }

这方法写的。。等于是在里面调用另一个页的删除方法。很有想法。不错.

  3.在同一个目录增加一个文件:FCKdel_file.aspx,代码如下:

 
<%@ Page Language="C#" %>
 
<%    
    //if 判断条件中,第一个条件是为了防止没有权限的用户删除文件,可以根据需要修改.   
    if (Request.Cookies["f1ba02f2-649b-4d80-ab71-cc77d9edd19d"] != null)
    {
        if (Request.QueryString["UD"] != null)
        {
            try
            {
                System.IO.File.Delete(Server.MapPath(Request.QueryString["filePath"].Trim())); Response.Write("1");
            }
            catch
            { Response.Write("0"); }
        }
        else Response.Write("0");
    }
    else Response.Write("-1");  %>

这才是真正的删除方法,写在了一个新页面里。  

然后运行试试吧~ok了~fckeditor确实还有不少地方需要完善。。哎。

cafe.wh 10,14 2009