2009-09-07 45 views
8

我們的一位客戶有一個問題,我們無法複製。我們使用SPFile.Properties以編程方式將文檔的屬性複製到目標文件。但是,由於某些原因,文件的屬性與列表中指定的元數據不匹配,因此文件存儲在該列表中。什麼時候SPFile.Properties!=到SharePoint中的SPFile.Item.Properties?

現在,我們可以通過複製SPFile.Item.Properties(尚未測試)來解決此問題,但我我只是想知道什麼情況下SPFile.Properties不等於SPFile.Item.Properties。

更新:我們剛收到來自我們客戶的更新。使用SPFile.Item.Properties始終返回最新信息。但是,我們仍然想要了解最初的問題。

+0

嘗試反射?代碼路徑看起來非常不同,所以我不認爲你可以依賴於SPFile.Properties == SPFile.Item.Properties。 – 2009-09-07 11:38:16

+0

還沒有嘗試過與反射器。我希望找到正式的「記錄」差異,以及人們對它的體驗,而不是試圖通過逆向工程來推斷DLL。 (儘管我一直在那裏;-) – 2009-09-07 13:28:41

回答

7

SPFile.PropertiesSPFile.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

+0

我已經標記了這一個作爲答案,因爲它是目前爲止最好的描述(雖然我沒有證實它)。但它並不能解釋爲什麼這些屬性不完全同步。 – 2010-01-08 11:32:23

+1

1.在文件類型不允許的情況下,這些屬性不能同步,因爲這是針對.txt,.pdf和其他非辦公室文件的。 2.當您打開文檔庫項目以在'/ Forms/EditForm.aspx?id = 123',您正在編輯'SPFile.Item'值,而不是'SPFile.Properties',可以同步的值稍後將由SharePoint進行同步。 – naivists 2010-01-08 11:46:56

0

試圖找到「正式記錄」的任何東西都是可以撤銷的。 :-D。在線文檔吸吮,你最好使用博客條目等。

P.S.我在這裏同意亞歷克斯。儘管SPFile從未存在於沒有伴隨SPListItem的列表中,但2之間的連接可能會損壞(即能夠編輯列表項但文件不可打開)。這對我來說表示有關2的信息存儲在內容數據庫中的不同位置。我之前有過這種情況。

+1

謝謝,我認爲博客作品的官方文檔'。在SharePoint的情況下,你真的採取任何你可以得到的。 – 2009-09-08 07:34:08

+0

+1官方文檔。 :D另外,我會同意科林......由於SPFile和SPListItem之間存在差異,所以發生了一些事情。 – 2009-09-08 14:03:39

1

用戶將始終看到ListItem屬性,而不是文檔庫中的SPFile屬性。因此,在副本中使用ListItem屬性是一種方法。

+0

感謝Koen,有沒有這方面的證據,還是一個有教育意義的猜測?仍然想知道爲什麼SPFile.Properties存在並且不總是匹配。 – 2009-09-09 16:44:35

1

我相信這個問題與Sharepoint屬性升級/降級功能有關,它使文檔屬性可以嵌入到物理MSOffice文件中,並與它一起旅行到客戶端等等。然而,目前只支持Office文件類型據我所知)。

喬納森

+1

正確,與@naivists在標記爲答案的條目中所指出的不同。 – 2011-08-15 17:36:36

相關問題