2016-11-09 44 views
1

我對Sharepoint知之甚少。我們有一個SP站點: http://host/sites/project/subproject/LIBRARY%20Name/Forms/AllItems.aspx使用REST API在Sharepoint 2010中訪問文件

在瀏覽器中導航到此顯示一個文件列表。 我想使用SPs REST API以編程方式訪問這些文件。

我瞭解到,REST API通過http://host/_vti_bin/ListData.svc URL訪問。在瀏覽器這個返回的XML包含了服務,文檔,圖像條目等

訪問文件我嘗試以下網址:

http://host/_vti_bin/ListData.svc/Documents 
    http://host/_vti_bin/ListData.svc/Documents('LIBRARY%20Name') 
    http://host/_vti_bin/ListData.svc/Documents?$select=NAME('LIBRARY%20Name') 

,和許多其他變化。

我的問題是,考慮到我們的網站的URL,將在REST API服務網址是什麼樣子?

感謝

回答

1

除了從SharePoint 2013及更高版本中,爲SharePoint 2010 REST API支持相對限制的資源集合,特別是文件資源不被支持。

說了這麼多,你可以考慮下載文件下列方法。

爲了從庫中下載特定文件,讓我們假設 列表項ID是除了提供給網頁URL庫名

首先GET請求返回所謂使用以下端點文檔項(Microsoft.SharePoint.DataService.DocumentsItem型):

https://<weburl>/_vti_bin/listdata.svc/<listname>(<itemid>) 

一旦文檔項目被檢索,文件URL可以從PathName性質萃取(見下面的例子),最後通過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); 
}