我们的一位客户存在我们无法复制的问题。我们使用SPFile.Properties以编程方式将文档的属性复制到目标文件。但是,由于某种原因,文件的属性与存储在文件列表中的元数据不匹配。
现在,我们可以通过复制SPFile.Item.Properties(尚未测试)来解决此问题,但是我只是想知道在什么情况下SPFile.Properties不等于SPFile.Item.Properties。
更新:我们刚刚收到客户的更新。使用SPFile.Item.Properties总是返回最新信息。但是,我们仍然想了解原始问题。
最佳答案
SPFile.Properties
和SPFile.Item
字段之间略有不同,第一个调用的速度要慢得多。
您很可能已经看到了Microsoft Office文档的“属性”窗口(此窗口-http://dradisframework.org/images/tutorial/custom_document_properties.png)。这些是您访问SPFile.Properties
时读取的属性。由于存在一些解析二进制DOC文件并查找属性的代码基础结构,因此读取它们的速度很慢。 (每次访问属性最多需要30毫秒左右),请点击此处查看更多信息:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.properties.aspx
在SharePoint中,每个项目都是一个SPListItem
,其字段值(在这里我不是故意使用“属性”一词)存储在Sharepoint的内容数据库中。因此,当您访问SPFile.Item.Properties
时,您实际上是在查看文件所附加的SPListItem
,并从SharePoint的内容数据库中查看其属性。
当您上载设置了一些“Office属性”的文件时,在后台发生的事情是SharePoint将它们复制到SPListItem
中的同名字段。 (有关此信息,请点击此处:http://weblogs.asp.net/bsimser/archive/2004/11/22/267846.aspx)
这就是为什么这些属性通常具有相同的值的原因,但是只有在SharePoint知道如何从文件中读取元数据并将其写回的情况下,它才会发生。因此,万一您将.txt
文件放入SharePoint存储中,您将不会获得任何SPFile.Properties
。
关于sharepoint - 什么时候SPFile.Properties!=到SharePoint中的SPFile.Item.Properties?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1388502/