【问题标题】:How do I distinguish a SharePoint file update as being from a file upload?如何将 SharePoint 文件更新与文件上传区分开来?
【发布时间】:2010-04-12 17:48:55
【问题描述】:

在 SharePoint 中,首次将项目添加到文档库时,它会按预期触发 ItemAdded 和 ItemAdding 事件。如果您上传相同的文件名来更新现有文件,它将触发 ItemUpdated 和 ItemUpdating 事件,正如预期的那样。但是,我无法确定这种行为是否真的发生过。或者,更具体地说,我完全无法区分以下内容:

  • 项目已更新,因为有人上传了一个新文件,但没有对任何表单字段进行任何操作。
  • 项目已更新,因为有人点击“确定”但未对任何表单字段执行任何操作。

真的有办法区分这些类型的更新吗?事件属性中似乎没有包含此信息的内容,列表项和文件本身的版本历史记录中也没有。我什至尝试通过 OpenBinary() 比较文件本身,但在上述两种情况下,我仍然得到相同的结果。提前感谢您的帮助!

【问题讨论】:

    标签: sharepoint sharepoint-2007 event-handling document-library


    【解决方案1】:

    两年多前我也遇到过同样的问题。我实现它的方式是查看这两种事件类型的 before 和 after 属性中的所有字段,并且一些更晦涩的字段因事件类型而异。

    很遗憾,我无法再访问该代码,因此无法告诉您该字段的名称。只需转储所有之前和之后的属性并使用它。

    很痛苦,你会认为会有更简单的方法。我曾希望在第一次上传时 Before Properties 为 null 或为空,但没有这样的运气。

    【讨论】:

    • 起初当我尝试这个时,我没有找到任何成功区分任何东西的东西,但那是因为我只记录了 AfterProperties 中的东西,或者从之前发生了变化,或者不存在。我为之前的内容添加了一个额外的日志,但之后没有。果然,在我使用的众多不同上传方法中,以下内容始终“缺失”:vti_rtag、vti_etag、vti_replid、vti_docstoreversion、ti_docstoretype。这有一个不幸的副作用,就是告诉我更新事件一次触发两次,但有效的就是有效的。谢谢!
    • 这些字段名称听起来很熟悉。确保为此创建某种自动化测试,因为它没有记录并且不太可能在服务包/SharePoint 版本之间更改。
    猜你喜欢
    • 2021-08-29
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2010-10-02
    • 2017-01-20
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多