从SharePoint站点访问文件

时间:2015-03-02 09:18:39

标签: c# sharepoint

我的要求是使用C#访问位于SharePoint Team站点中的Excel文件。我可以直接从网站上传和下载文件,我已经获得了许可。但该网站由其他一些组维护,没有任何服务暴露。有没有办法使用C#访问该文件。

2 个答案:

答案 0 :(得分:1)

如果您无法直接访问SharePoint系统本身,只要您的同事没有停用负责的服务应用程序,您仍然可以使用SharePoint的REST服务API。

您可以使用REST和SharePoint 2013 here找到有关阅读文件的文档。

要通过C#访问REST,请使用以下代码:

HttpWebRequest endpointRequest =
  (HttpWebRequest)HttpWebRequest.Create(
  "http://<site url>/_api/web/getfilebyserverrelativeurl('/Shared Documents/filename.docx')");
endpointRequest.Method = "GET";
endpointRequest.Accept = "application/json;odata=verbose";
endpointRequest.Headers.Add("Authorization", 
  "Bearer " + accessToken);
HttpWebResponse endpointResponse =
  (HttpWebResponse)endpointRequest.GetResponse();

答案 1 :(得分:0)

有多种方法可以从SharePoint下载文件,您可以将CSOM等特定的SharePoint API用于此目的,或者使用vanilla .NET功能(例如HttpClient ClassWebClient Class)下面:

using (var client = new WebClient())
{
    client.DownloadFile(sharePointFileUrl, localFileName);
}  

如何使用SharePoint CSOM API下载文件

SharePoint CSOM API包含File.OpenBinaryDirect method,用于从SharePoint下载文件:

private static void DownloadFile(Web web, string fileUrl,string targetPath)
{
    var ctx = (ClientContext)web.Context;
    ctx.ExecuteQuery();
    using(var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, fileUrl))
    {
         var fileName = Path.Combine(targetPath, System.IO.Path.GetFileName(fileUrl));
         using (var fileStream = System.IO.File.Create(fileName))
         {
             fileInfo.Stream.CopyTo(fileStream);
         }
    }
}

用法

using (var ctx = new ClientContext(webUri))
{
      DownloadFile(ctx.Web, "/documents/Report.xslx", @"c:\downloads");
}
相关问题