2011-10-24 49 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

相关问题