2017-03-15 18 views
1

OneDrive APIを使用してユーザーと共有するWord文書をダウンロードしようとしています。OneDrive APIを使用して共有文書をダウンロードする

私はthisページのドキュメントを使用しました。ドキュメントは、私がdriveItemリソースを取得しています言うように

using (HttpClient client = new HttpClient()) 
{  
    client.BaseAddress = new Uri("https://api.onedrive.com"); 
    client.DefaultRequestHeaders.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", 
    <ACCESS TOKEN>); 

    HttpResponseMessage response = await client.GetAsync("/v1.0/drive/oneDrive.sharedWithMe"); 
} 

:まず私は、次のコードを使用して共有ファイルのリストを取得しています。資料はhereです。この応答はJSONです:

{ 
    "value":[ 
     { 
     "@content.downloadUrl":"DOWNLOAD URL", 
     "createdDateTime":"2017-03-09T09:08:19.227Z", 
     "cTag":"CTAG", 
     "eTag":"ETAG", 
     "id":"ID", 
     "lastModifiedDateTime":"2017-03-09T13:39:42.133Z", 
     "name":"Word document.docx", 
     "webUrl":"WEBURL", 
     "remoteItem":{ 
      "createdBy":{ 
       "user":{ 
        "displayName":"username", 
        "id":"USERID" 
       } 
      }, 
      "fileSystemInfo":{ 
       "createdDateTime":"2017-03-09T08:50:52.663Z", 
       "lastModifiedDateTime":"2017-03-09T13:06:19.653Z" 
      }, 
      "file":{ 
       "hashes":{ 
        "sha1Hash":"23894BC4D8E941FFA861851F9B47DCBD9DB061C6" 
       }, 
       "mimeType":"image/png" 
      }, 
      "id":"REMOTE ID", 
      "lastModifiedBy":{ 
       "user":{ 
        "displayName":"username", 
        "id":"USER ID" 
       } 
      }, 
      "lastModifiedDateTime":"2017-03-09T13:39:28.497Z", 
      "name":"Word document.docx", 
      "parentReference":{ 
       "driveId":"DRIVE ID" 
      }, 
      "shared":{ 
       "owner":{ 
        "user":{ 
        "displayName":"username", 
        "id":"DRIVE ID" 
        } 
       } 
      }, 
      "size":15854, 
      "webUrl":"WEBURL" 
     } 
     } 
    ] 
} 

私はこのJSONからdownloadUrlを使ってファイルをダウンロードしています。 URLは機能していますので、ファイルをダウンロードすることができ、最初は単語のように見えます。しかし、実際にはpngファイルです。私は、MIMEタイプがapplication/vnd.openxmlformats-officedocument.wordprocessingml.document、または.docxドキュメントに属する他のMIMEタイプであることを期待しています。 JSONはMIMEタイプがimage/pngだと言っています。 Wordを使用してファイルを開くことはできませんが、画像として開く必要があります。画像として開くと、ファイルの内容を見ることができますが、実際のWord文書が必要です。

ファイルをバイト単位でダウンロードし、Word文書に変換しようとしました。ダウンロードしたファイルが本当にPNGであるため、もちろん運がない...

私はそれが予想されるドキュメントタイプとして共有ファイルをダウンロードするにはどうすればよいですか?

答えて

1

これは、コンテンツの代わりにサムネイルを返しているサービスのバグのようです。我々は調査しremoteItem.parentReferenceのうち、driveId値を引いて、あなたはそれを回避することができることを解決し、idremoteItem外の値などの要求作り上げる中:

https://api.onedrive.com/v1.0/drives/driveid /アイテム/ id /コンテンツを

これにより、ダウンロードURLにリダイレクトされ、必要なものが表示されます。

問題が解決したら、この回答を同封して更新します。

+0

ご返信ありがとうございます。 SharedItemから直接idを使用することはできません。私はremoteItem.idを使用しました。あなたがidのid値で意味したものなのかどうかはわかりません。この解決策は機能します。私はあなたの答えを問題の解決策として受け入れます。 – MennoB

+0

あなたは正しいです、私は 'remoteItem.id'を意味しました - それを修正する答えを更新します。 – Brad

関連する問題