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であるため、もちろん運がない...
私はそれが予想されるドキュメントタイプとして共有ファイルをダウンロードするにはどうすればよいですか?
ご返信ありがとうございます。 SharedItemから直接idを使用することはできません。私はremoteItem.idを使用しました。あなたがidのid値で意味したものなのかどうかはわかりません。この解決策は機能します。私はあなたの答えを問題の解決策として受け入れます。 – MennoB
あなたは正しいです、私は 'remoteItem.id'を意味しました - それを修正する答えを更新します。 – Brad