从SharePoint网站访问文件

本文关键字:文件 访问 网站 SharePoint | 更新日期: 2024-09-25 21:52:49

我的要求是使用C#访问SharePoint团队网站中的Excel文件。我可以直接从网站上传和下载文件,我已经对此给予了许可。但该网站由其他一些团体维护,没有任何服务被公开。有没有任何方法可以使用C#访问该文件。

从SharePoint网站访问文件

当您不能直接访问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类、WebClient类),如下所示:

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

如何使用SharePoint CSOM API下载文件

SharePoint CSOM API包含用于从SharePoint下载文件的File.OpenBinaryDirect方法:

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");
}