[英]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 Class , WebClient Class )来实现此目的,如下所示:
using (var client = new WebClient())
{
client.DownloadFile(sharePointFileUrl, localFileName);
}
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.