繁体   English   中英

从SharePoint网站访问文件

[英]Access a file from a SharePoint site

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

当您没有直接访问SharePoint系统本身的权限时,只要您的同事没有停用负责的服务应用程序,您仍然应该能够使用SharePoint的REST服务API。

您可以在此处找到有关使用REST和SharePoint 2013读取文件的文档。

要通过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();

有几种从SharePoint下载文件的方法,您可以使用特定的SharePoint API(例如CSOM)或普通的.NET功能(例如HttpClient ClassWebClient Class )来实现此目的,如下所示:

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

如何使用SharePoint CSOM API下载文件

SharePoint CSOM API包含File.OpenBinaryDirect方法 ,该方法用于从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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM