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

时间:2014-07-16 21:13:27

标签: c#-4.0 sharepoint sharepoint-2010 sharepoint-2013

我已经从代码中将文档上传到SharePoint,以及几个列表项属性。我可以看到文档成功上传了项目列值。

在下一步中,我尝试从标记它的代码上传没有列表项属性的同一文档以覆盖现有文件。文件已成功上载并覆盖,但它已丢失第一步中提供的列表项列值。

我的目标是覆盖文件而不会干扰现有的列表项元数据。这肯定是可能的,因为SharePoint UI可以上载/覆盖文档而不会干扰现有元数据。

你能告诉我SharePoint如何实现这一目标吗?干杯

1 个答案:

答案 0 :(得分:0)

我以这种方式实现了它。我认为这可能是唯一的方法。

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成员,在添加文件时,HashTable包含所有文档属性。如果需要,不要忘记提供True标记来覆盖文档并签出。