• ASp.net下 fckeditor 配置图片上传最简单的方法


     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:

    看来我不是个喜欢写东西的人,觉得很麻烦。。。

    总之第一篇博客就这样了,呵呵

     

     Demo 下载

  • 相关阅读:
    北京Uber优步司机奖励政策(4月1日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月1日)
    成都Uber优步司机奖励政策(3月31日)
    北京Uber优步司机奖励政策(3月31日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(3月31日)
    uber司机已经激活了,就是还没有上传头
    优步深圳车辆准入标准降啦!6万8年粤车牌!
    开优步认识各色各样的人,人生需要这样的新鲜体验!
    Uber:中国市场两年内不考虑盈利,每年补贴10亿美金
    设置Windows开机自动启动VirtualBox虚拟机系统
  • 原文地址:https://www.cnblogs.com/zhanxp/p/1644499.html
Copyright © 2020-2023  润新知