除了从SharePoint 2013及更高版本中,为SharePoint 2010 REST API支持相对限制的资源集合,特别是文件资源不被支持。
说了这么多,你可以考虑下载文件下列方法。
为了从库中下载特定文件,让我们假设 列表项ID是除了提供给网页URL和库名。
首先GET
请求返回所谓使用以下端点文档项(Microsoft.SharePoint.DataService.DocumentsItem
型):
https://<weburl>/_vti_bin/listdata.svc/<listname>(<itemid>)
一旦文档项目被检索,文件URL可以从Path
和Name
性质萃取(见下面的例子),最后通过HTTP GET
下载
C#示例
var webUrl = "https://intranet.contoso.com/";
var listName = "Documents"; //<-list name goes here
var itemId = 1; //<-list item id goes here
using (var client = new WebClient())
{
client.BaseAddress = webUrl;
client.Credentials = credentials;
client.Headers.Add(HttpRequestHeader.Accept, "application/json;odata=verbose");
//client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
var url = String.Format("_vti_bin/listdata.svc/{0}({1})",listName,itemId);
var content = client.DownloadString(url);
var json = JObject.Parse(content);
//extract file url
var fileUrl = (string)json["d"]["Path"] + "/" + (string)json["d"]["Name"];
Console.WriteLine(fileUrl);
//download a file
var fileName = Path.GetFileName(fileUrl);
client.DownloadFile(fileUrl,fileName);
}