Sharepoint 2013事件接收器ItemUpdating - 检测附件

时间:2018-04-17 16:16:21

标签: events sharepoint attachment

我一直在寻找一种方法,使用C#开发的SharePoint 2013中的同步事件接收器检测项目附件的更改。

ItemAdding事件不相关,因为如果在创建项目的同一时间上传附件,则不会出现问题,但事件ItemUpdating更相关。实际上,如果仅在同步事件期间添加或删除一个(或多个)附件,我希望能够更新另一个字段。异步事件不是一种选择。

我尝试了提供here的解决方案而没有任何运气:

  • 添加附件时,Request.Files.Count高于或等于1
  • 当附件被删除时,如果项目
  • 上仍存在其他附件,则等于1
  • 如果未进行任何更改,如果项目上存在其他附件,则仍然等于1.

你有什么想法我能做到吗?

提前谢谢你,

凯文

编辑19月4日: 经过进一步调查,我发现 Request.File 总是发送一个空文件,所以我现在知道 Request.File.Count 总是至少相等的原因到1。

添加了一小段代码后,我可以检测到正在添加的一个或多个有效文件:

int attachCount = 0;  
HttpFileCollection fileCollection = curContext.Request.Files;  
for (int j = 0; j < fileCollection.Count; j++)
{
    HttpPostedFile file = fileCollection[j];
    if (file.ContentLength > 0)
    {
        attachCount++;
    }
}

剩下的就是如何在ItemUpdating事件中检测到附件已被删除,有什么想法吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

经过大量搜索后,我使用ItemUpdated事件来解决在专用字段中附件数量被删除的附件问题。一切都按预期工作。唯一的缺点是用户可能需要等待几秒才能看到附件移除的影响。