zoukankan      html  css  js  c++  java
  • .NET下fckeditor动态设置文件上传路径,解决多用户多路径的问题。

    首先看一下FCKeditor是如何获取用户的文件夹路径设置的,以及获取的顺序:

    FCKeditor.net获取上传路径文件是:FileWorkerBase.cs,打开找到以下部分view plaincopy to clipboardprint?
    protected string UserFilesPath
    {
    get
    {
    if ( sUserFilesPath == null )
    {
    // 第一回从application["FCKeditor:UserFilesPath"] 中读取,如果没有尝试其它方式
    sUserFilesPath = (string)Application["FCKeditor:UserFilesPath"] ;

    // 第二回从session["FCKeditor:UserFilesPath"] 中读取,如果没有尝试其它方式
    if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
    {
    sUserFilesPath = (string)Session["FCKeditor:UserFilesPath"] ;

    // 第三回从web.config中读取,如果没有尝试其它方式
    if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
    {
    sUserFilesPath = System.Configuration.ConfigurationSettings.AppSettings["FCKeditor:UserFilesPath"] ;

    // 第四回从DEFAULT_USER_FILES_PATH(这个变量在同文件中)中读取,如果没有尝试其它方式
    if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
    sUserFilesPath = DEFAULT_USER_FILES_PATH ;
    // 第五回从网址参数ServerPath中读取
    if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
    {
    sUserFilesPath = Request.QueryString["ServerPath"] ;
    }

    }
    }

    // Check that the user path ends with slash ("/")
    if ( ! sUserFilesPath.EndsWith("/") )
    sUserFilesPath += "/" ;
    }
    return sUserFilesPath ;
    }
    }

    protected string UserFilesPath
    {
    get
    {
    if ( sUserFilesPath == null )
    {
    // 第一回从Application["FCKeditor:UserFilesPath"] 中读取,如果没有尝试其它方式
    sUserFilesPath = (string)Application["FCKeditor:UserFilesPath"] ;

    // 第二回从Session["FCKeditor:UserFilesPath"] 中读取,如果没有尝试其它方式
    if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
    {
    sUserFilesPath = (string)Session["FCKeditor:UserFilesPath"] ;

    // 第三回从web.config中读取,如果没有尝试其它方式
    if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
    {
    sUserFilesPath = System.Configuration.ConfigurationSettings.AppSettings["FCKeditor:UserFilesPath"] ;

    // 第四回从DEFAULT_USER_FILES_PATH(这个变量在同文件中)中读取,如果没有尝试其它方式
    if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
    sUserFilesPath = DEFAULT_USER_FILES_PATH ;

    // 第五回从网址参数ServerPath中读取
    if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
    {
    sUserFilesPath = Request.QueryString["ServerPath"] ;
    }

    }
    }

    // Check that the user path ends with slash ("/")
    if ( ! sUserFilesPath.EndsWith("/") )
    sUserFilesPath += "/" ;
    }
    return sUserFilesPath ;
    }
    }

    所以我们只要在Session中指定了路径就可以实现动态路径或多用户多路径了,下面看我的代码:

    protected void Page_Load(object sender, EventArgs e)
    {
    Session["UserID"] = "12345679";
    string URL = Session["UserID"].ToString();
    Session["FCKeditor:UserFilesPath"]="~/factory/" + URL + "/UpLoadFile/";
    }

    在页面载入时设置用户的Session["UserID"],为不同用户指定一个ID,然后设置一下文件要上传了路径,动态的路径Session["FCKeditor:UserFilesPath"]是用Session["UserID"]结合我们的网站目录生成的一个路径。当然也可以直接在Session指定一个路径,然后赋值给Session["FCKeditor:UserFilesPath"]。

    至此,我们简单的解决了fckeditor动态设置文件上传路径,解决多用户多路径的问题。

  • 相关阅读:
    完全背包
    二分求值(二分适合求答案在两个数之间的题目)
    set<pair<int,int> >的用法
    01背包 (dp专题)
    矩阵快速幂
    BZOJ1977 [BeiJing2010组队]次小生成树 Tree
    BZOJ1854 [Scoi2010]游戏
    BZOJ1054 [HAOI2008]移动玩具
    NOIP系列复习及题目集合
    BZOJ2708 [Violet 1]木偶
  • 原文地址:https://www.cnblogs.com/superfeeling/p/2214400.html
Copyright © 2011-2022 走看看