2016-08-29 8 views
1

RestSharpとグラフAPIを使用してOnedriveにファイルをアップロードしようとしています。基本的に私はExcelファイルをアップロードしたいと思います。しかし、ファイルが保存されても、コンテンツに問題があります。私が使用しています:グラフAPIを使用してC#でOnedriveにアップロード

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

は、コードを使用して:

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

これは、しかし、XLSXファイルが破損したファイルをアップロードします。

基本的に、ストリームをRestSharpリクエストに渡す方法を理解する必要があります。

答えて

0

RestClientを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; 

     } 
関連する問題