2011-10-24 60 views
1

我需要將文件的新版本添加到SPFileCollection不改變版本(它是PDF文件的內容的系統更新)Sharepoint:如何在不更改版本的情況下添加文件?

UpdateOverwriteVersion讓我改變的元數據,但有什麼辦法改變文件的內容(字節)?

解決方法: 好的,因爲Stefan發現,沒有令人滿意的解決方案。 我發現了兩種解決方法:

1. (注意關閉版本控制可能會導致錯誤的行爲,如果還有人在名單上的工作... - Stefan

oFile = oWeb.GetFile(url); 
oFile.Item.ListItems.List.EnableVersioning = false; 
oFile.Item.ListItems.List.Update(); 
oFolder.Files.Add(oFile.Name, aBytes, fileProperties, true); 
oFile.Item.ListItems.List.EnableVersioning = true; 
oFile.Item.ListItems.List.Update(); 

2 。

oFile = oWeb.GetFile(sAdres); 
int iFileVersion = oFile.UIVersion; 
oFolder.Files.Add(oFile.Name, aBytes, fileProperties, true); 
oFileVersion = oFile.Versions.GetVersionFromID(iFileVersion); 
if (null != oFileVersion && !oFileVersion.IsCurrentVersion) 
{ 
    oFileVersion.Delete(); 
} 

回答

0

您可以加載SPFile對象,然後調用SPFile.SaveBinary(Stream, SPFileSaveBinaryParameters)方法更新其內容。

使用SFileSaveBinaryParametersCreateVersion屬性,您可以指定是否應該創建新版本。

[...]這是設計。據我所知,沒有其他解決方案。

引用版主Microsoft TechNet forum

+0

嗯,我試過用: 'SPFile oFile = oWeb.GetFile(url); oFile.SaveBinary(MemoryStream的,新SPFileSaveBinaryParameters(){ CreateVersion =假, CheckRequiredFields =假 });' 但它無論如何增加了新的版本......我做錯了什麼?我應該做更多的事嗎? – Robert

+0

@羅伯特:對不起,以前從未使用過這個開關。在'SPFile.SaveBinaryStreamInternal'方法中,arg'CreateVersion'變爲'bForceCreateVersion'。其中有一個「稍微」不同的含義;)。 – Stefan

+0

好的,謝謝,我發現了兩種解決方案:關閉版本控制或刪除以前的版本,沒有一個很好;) – Robert

相關問題