如何使用事件接收器上传之前检查库文档文件的大小

时间:2017-10-11 09:45:48

标签: c# sharepoint

我是sharepoint环境的新手,但我有一个问题 我想创建一个事件接收器来检查用户将上传的库中文件的大小, 因为我想要拒绝大于1 MB的大小。

任何帮助将不胜感激

我尝试过: 我尝试抓住附件文件以获得它的大小,但我不能!

    public override void ItemAdding(SPItemEventProperties properties){
        using (SPSite oSPsite = new SPSite("http://win-sp:1001/"))
        {
            using (SPWeb oSPWeb = oSPsite.OpenWeb())
            {
                oSPWeb.AllowUnsafeUpdates = true;
                SPDocumentLibrary oLibrary = oSPWeb.Lists["myLibrary"] as SPDocumentLibrary;

                if (oLibrary != null)
                {
                    properties.BeforeProperties["Title"].ToString(); 
                }
            }
        }
        base.ItemAdding(properties);
    }

1 个答案:

答案 0 :(得分:0)

您可以尝试修改下面提到的代码:

我们需要使用properties.AfterProperties["vti_filesize"]properties.ListItem.File.TotalLength来检查文件大小。

public override void ItemAdding(SPItemEventProperties properties)
{
     long validFileSize  = 1000000;//1MB;
     long currentFileSize;
     if (properties.ListItem == null)
     {
             using (SPWeb web = properties.OpenWeb())
             {                   
                 if (properties.ListTitle.ToLower() == "myLibrary")
                 {                       
                      currentFileSize = long.Parse(properties.AfterProperties["vti_filesize"].ToString());
                      if (currentFileSize > validFileSize)
                      {
                            return false;
                      }
                }                 
          }
    }
    else if (properties.ListItem.ParentList.Title.ToLower() == "myLibrary")
    {         
                currentFileSize = properties.ListItem.File.TotalLength;
                if (currentFileSize > validFileSize)
                {
                      return false;
                }

    }
    return true;
}