• Sharepoint 2010 禁止用户在文档库的第一级(根)目录上传文件


    首先,什么叫文档库的第一级(根)目录。当我们打开文档库时,然后就点击Ribbon中的"上载单个文件",此时就是在第一级目录的上传文件。我要做的就是禁止用户在这里上传文档,只允许新建文件夹。看下图,图片20100-12-02 151718就是在第一级目录

    我首先想到的方法是,根据用户是否在文档库第一级目录来隐藏Ribbon中的"上载单个文件"及"新建文档"命令项(可参考http://blog.csdn.net/sygwin_net/article/details/6789973)。这样得到的结果是,用户打开文档库时(在第一级目录时),也就看不到这两项命令了。可这样并未完全控制住。因为我只是禁止在第一级目录上传或新建文件,在非第一级目录还是要用户上传文件的,此时用户可以在上传文档窗口,更改上传文件的位置,如下图(选择文件夹按钮):

    下面我就想用事件接收器的ItemAdding来控制。思路很简单,用户上传文件时,判断上传文件的路径是否在第一级目录即可。代码如下:

    public override void ItemAdding(SPItemEventProperties properties)
    {
    base.ItemAdding(properties);
    if (properties.BeforeUrl == properties.AfterUrl && properties.BeforeUrl.IndexOf("/") == properties.BeforeUrl.LastIndexOf("/"))
    {
    properties.Cancel = true;
    properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
    properties.RedirectUrl = "/_layouts/error.aspx?ErrorText="+Microsoft.SharePoint.Utilities.SPEncode.UrlEncode("禁止在根目录上传文件!");
    }
    }

    说明:在ItemAdding事件里,此时文档还未上传到库里,所以properties的BeforeProperties,AfterProperties及ListItem均为null。也就不能用了。

    而对于BeforeUrl和AfterUrl属性,它有以下特点:

    如果上传文档,不管在哪级目录下,两者相等,比如均为:DocLib/2011-12-02_154248.jpg。
    如果新建文件夹,不管在哪级目录下,BeforeUrl均为空,而AfterUrl则是文件夹的路径,比如:DocLib/aa

    这样根据properties.BeforeUrl == properties.AfterUrl判断用户是上传文件还是新建文件夹;
    根据properties.BeforeUrl.IndexOf("/") == properties.BeforeUrl.LastIndexOf("/")判断用户是否在第一级目录里上传文件。因为在第一级目录上传文件BeforeUrl的值,类似为:DocLib/2011-12-02_154248.jpg
    在第二级目录上传文件BeforeUrl的值,类似为:DocLib/test/2011-12-02_154248.jpg
    这样根据"/"的索引位置就可以判断是否在第一级目录里上传文件。

    参考:http://sharepointserved.blogspot.com/2011/05/to-prevent-users-from-creating-folders.html

  • 相关阅读:
    【codecombat】 试玩全攻略 第九关 循环又循环
    【codecombat】 试玩全攻略 第十三关 已知敌人
    【codecombat】 试玩全攻略 第十一关 再次迷宫经历
    【codecombat】 试玩全攻略 第六关 cell commentary
    【codecombat】 试玩全攻略 第八关 火舞
    【codecombat】 试玩全攻略 第十二关 恐惧之门
    【codecombat】 试玩全攻略 第十四关 已知敌人
    苹果apns推送总结
    Xcode 提升速度小技巧
    UITextField 限制输入字数
  • 原文地址:https://www.cnblogs.com/sygwin/p/2279182.html
Copyright © 2020-2023  润新知