Поскольку Thumbnail.Url
свойство используется для хранения URL-адреса для извлечения содержимого миниатюры , вероятно, самый простой вариант загрузки содержимого миниатюры будет выглядеть следующим образом:
var page = await graphClient.Me.Drive.Items[itemId].Thumbnails.Request().GetAsync();
var thumbnailSet = page.FirstOrDefault();
var thumbnail = thumbnailSet?.Medium;
using (var client = new System.Net.WebClient())
{
var content = client.DownloadData(thumbnail.Url); //download it as a byte array
System.IO.File.WriteAllBytes(targetFileName, content); //save into file
}
Опция 2
Другой вариант - использовать следующую конечную точку ( из документов ):
GET /me/drive/items/{item-id}/thumbnails/{thumb-id}/{size}/content
Вотпример для msgraph-sdk-dotnet
:
//1.get thumbnail metadata (similar to previous example)
var requestUrl = $"{graphClient.BaseUrl}/me/drive/items/{itemId}/thumbnails/{thumbnailId}/{thumbnailSize}";
var message = new HttpRequestMessage(HttpMethod.Get, requestUrl);
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);
var response = await graphClient.HttpProvider.SendAsync(message);
var content = await response.Content.ReadAsStringAsync();
var thumbnail = JsonConvert.DeserializeObject<Thumbnail>(content);
//2.get thumbnail content
requestUrl = $"{graphClient.BaseUrl}/me/drive/items/{itemId}/thumbnails/{thumbnailId}/{thumbnailSize}/content";
message = new HttpRequestMessage(HttpMethod.Get, requestUrl);
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);
response = await graphClient.HttpProvider.SendAsync(message);
var bytesContent = await response.Content.ReadAsByteArrayAsync();