2016-08-29 4 views
1

Ich versuche, eine Datei mit RestSharp und Graph API auf Onedrive hochzuladen. Grundsätzlich möchte ich eine Excel-Datei hochladen. Selbst wenn die Datei gespeichert wird, liegt ein Problem mit dem Inhalt vor. Ich verwende:Upload zu Onedrive mit C# unter Verwendung der Graph-API

https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/item_uploadcontent

mit dem Code:

 string newToken = "bearer ourtoken"; 
     var client = new RestClient("https://xxx-my.sharepoint.com/_api/v2.0/"+ oneDrivePath + Path.GetFileName(filePathWithName) + ":/content"); 
     var request = new RestRequest(Method.PUT); 
     request.RequestFormat = DataFormat.Json; 
     request.AddHeader("Authorization", newToken); 
     request.AddHeader("Content-Type", "text/plain"); 

     byte[] sContents; 
     FileInfo fi = new FileInfo(filePathWithName); 

     // Disk 
     FileStream fs = new FileStream(filePathWithName, FileMode.Open, FileAccess.Read); 
     BinaryReader br = new BinaryReader(fs); 
     sContents = br.ReadBytes((int)fi.Length); 
     br.Close(); 
     fs.Close(); 

     request.AddBody(Convert.ToBase64String(sContents)); 

     var response = client.Execute(request); 

Diese lädt die Datei jedoch die XLSX-Datei beschädigt wird.

Grundsätzlich muss ich herausfinden, wie Sie den Stream an die RestSharp Anfrage übergeben.

Antwort

0

Gelöst durch Ändern von RestClient in HttpClient.

string newToken = "bearer mytoken" 

     using (var client = new HttpClient()) 
     { 
      var url = "https://xxx-my.sharepoint.com/_api/v2.0/" + oneDrivePath + Path.GetFileName(filePathWithName) + ":/content"; 
      client.DefaultRequestHeaders.Add("Authorization", newToken); 


      byte[] sContents = File.ReadAllBytes(filePathWithName); 
      var content = new ByteArrayContent(sContents); 

      var response = client.PutAsync(url, content).Result; 

      return response; 

     } 
Verwandte Themen