我们的一个客户有一个问题,我们无法复制。我们使用SPFile.Properties编程地将文档的属性复制到目标文件中。但是,由于某些原因,文件的属性与存储在文件中的列表中指定的元数据不匹配。
现在,我们可能可以通过复制SPFile.Item.Properties (尚未测试)来解决这个问题,但我只是想知道在什么情况下SPFile.Properties不等于SPFile.Item.Properties。
更新:我们刚刚收到客户的最新消息。使用SPFile.Item.Properties总是返回最新的信息。不过,我们仍想了解原来的问题。
发布于 2010-01-07 16:02:59
SPFile.Properties和SPFile.Item字段之间有细微的区别,而第一个字段调用起来要慢得多。
您很可能已经看到了Microsoft的"properties“窗口(这个- 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。
发布于 2009-09-09 16:03:21
用户将始终在文档库中看到ListItem属性,而不是SPFile属性。因此,在副本中使用ListItem属性是可行的。
发布于 2011-08-15 15:49:57
我认为此问题与Sharepoint属性提升/降级功能有关,该特性允许将文档属性嵌入到物理MSOffice文件中并与其一起传输到客户端等。然而,目前仅支持此功能(据我所知)。
乔纳森
https://stackoverflow.com/questions/1388502
复制相似问题