2016-11-09 2 views
1

Ich weiß sehr wenig über Sharepoint. Wir haben eine SP-Site: http://host/sites/project/subproject/LIBRARY%20Name/Forms/AllItems.aspxZugriff auf Dateien in Sharepoint 2010 mit REST API

Navigieren zu diesem im Browser zeigt mir eine Liste von Dateien. Ich möchte SPs REST API verwenden, um programmatisch auf diese Dateien zuzugreifen.

Ich habe gelernt, dass auf die REST API über die http://host/_vti_bin/ListData.svc URL zugegriffen wird. Im Browser gibt diese XML, die Einträge für Dienste enthält, Dokumente, Bilder, usw.

Dateien zuzugreifen i die folgenden URLs versucht:

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') 

und viele andere Variationen.

Meine Frage ist, angesichts der URL unserer Website, wie würde die REST-API-Service-URL aussehen?

Dank

Antwort

1

Neben Sharepoint 2013 und späteren Versionen unterstützt REST-API für Sharepoint 2010 eine relativ restriktive Menge von Ressourcen, insbesondere Datei-Ressource nicht unterstützt wird.

Nachdem gesagt, dass Sie den folgenden Ansatz zum Herunterladen einer Datei berücksichtigen könnten.

Um eine bestimmte Datei aus einer Bibliothek zum Download, kann Liste annimmt Artikel-ID zusätzlich zu Web-URL zur Verfügung gestellt und Bibliotheksnamen.

Erste GET Anfrage liefert so Belegposition (Microsoft.SharePoint.DataService.DocumentsItem Typen) mit dem folgenden Endpunkt genannt:

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

Sobald Belegposition abgerufen wird, könnte Datei-URL aus Path und Name Eigenschaften extrahiert werden (siehe unten Beispiel) und schließlich über HTTP GET

C# Beispiel

heruntergeladen
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); 
} 
Verwandte Themen