Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 上载/覆盖SharePoint文档,而不会从代码中丢失列表项元数据_C# 4.0_Sharepoint_Sharepoint 2010_Sharepoint 2013 - Fatal编程技术网

C# 4.0 上载/覆盖SharePoint文档,而不会从代码中丢失列表项元数据

C# 4.0 上载/覆盖SharePoint文档,而不会从代码中丢失列表项元数据,c#-4.0,sharepoint,sharepoint-2010,sharepoint-2013,C# 4.0,Sharepoint,Sharepoint 2010,Sharepoint 2013,我已将一个文档从代码和两个列表项属性上载到SharePoint。我可以看到文档已成功上载,其中包含项目列值 在下一步中,我尝试上载同一个文档,但不包含列表项属性,这是通过代码将其标记为覆盖现有文件。文件已成功上载和覆盖,但它已丢失第一步中提供的列表项列值 我的目标是在不干扰现有列表项元数据的情况下覆盖该文件。这当然是可能的,因为SharePoint UI可以在不干扰现有元数据的情况下上载/覆盖文档 有人能告诉我SharePoint是如何做到这一点的吗?干杯我就是这样做到的。我想这可能是唯一的办法

我已将一个文档从代码和两个列表项属性上载到SharePoint。我可以看到文档已成功上载,其中包含项目列值

在下一步中,我尝试上载同一个文档,但不包含列表项属性,这是通过代码将其标记为覆盖现有文件。文件已成功上载和覆盖,但它已丢失第一步中提供的列表项列值

我的目标是在不干扰现有列表项元数据的情况下覆盖该文件。这当然是可能的,因为SharePoint UI可以在不干扰现有元数据的情况下上载/覆盖文档


有人能告诉我SharePoint是如何做到这一点的吗?干杯

我就是这样做到的。我想这可能是唯一的办法

using (SPSite site = new SPSite(url))
{
    using (var web = site.OpenWeb())
    {
        var lib = web.Lists["Documents"] as SPDocumentLibrary;

        var file = web.GetFile(string.Format("{0}/Shared Documents/{1}", web.Url, fileName));

        if (file.Exists)
            file = lib.RootFolder.Files.Add(fileName, newContent, file.Properties, true);
        else
            file = lib.RootFolder.Files.Add(fileName, newContent, true);
    }
}

在添加文件时,必须提供
file.Properties
成员,该成员在
哈希表中具有所有文档属性。如果需要,请不要忘记提供
True
标志以覆盖文档并签出。

您现在如何上载文档?som、com、rest?也许您可以通过SP对象模型共享一些代码