使用C#从Sharepoint库检索文件

时间:2015-05-22 09:06:42

标签: c# sharepoint

我想从Sharepoint团队中的库文件夹中检索文件。我确切知道该文件的确切位置,但我不知道它的全名。

该文件夹的完整网址为:http://ts/001/API/Asset%20Optimisation%20Interface/Forms/AllItems.aspx?RootFolder=%2F001%2FAPI%2FAsset%20Optimisation%20Interface%2FAsset%20Technical%20Data&FolderCTID=0x0120002C707B834A70044986A39A4BCBFE9C6D&View= {889C2A16-626B-4FFC-97F7-142AA27522F3}

在此文件夹中,有几个子文件夹,只有一个文件。该文件是一个excel文件,其名称将以'我的文件名开头。

我还没有找到如何在我的CamlQuery中使用RecursiveAll来查询文件。不幸的是,子文件夹中会有类似命名的文件,这些文件是我不感兴趣的。

以下代码:

        ClientContext clientContext = new ClientContext("http://ts/001/API/");
        var list = clientContext.Web.Lists.GetByTitle("Asset Optimisation Interface");

        CamlQuery qry = new CamlQuery();

        qry.ViewXml = "<View Scope='Recursive'></View>";

        var files = list.GetItems(qry);
        clientContext.Load(files);

        clientContext.ExecuteQuery();

        foreach (var file in files)
        {
            Console.WriteLine(file["FileLeafRef"]);
        }

关于CamlQuery的MSDN文档似乎相当轻松!

找到我感兴趣的文件后,我想将其下载到本地驱动器。

任何帮助将不胜感激!

备注

  • 我无法控制文件夹结构或文件名
  • Sharepoint 2013
  • .Net Framework 4.0
  • Microsoft.SharePoint.Client.dll 14.0.0.0
  • Microsoft.SharePoint.Client.Runtime.dll 14.0.0.0

1 个答案:

答案 0 :(得分:1)

通过下面的链接和说明解决: Unable to retrieve file information from SharePoint library using Client Object Model

Relavent片段:

        CamlQuery qry = new CamlQuery();
        qry.ViewXml = "<View></View>";
        qry.FolderServerRelativeUrl = "/001/API/Asset Optimisation Interface/Asset Technical Data/";

我没想到服务器相对URL与ClientContext中的位置无关