我正在使用Microsoft Graph
API开发UWP应用。我正在使用以下logged in
API
用户当天的会议列表
https://graph.microsoft.com/v1.0/me/calendarView?startDateTime=2017-06-20T20:00:00.0000000&endDateTime=2017-06-21T10:00:00.0000000
在创建会议时,我在邀请参与者的邀请中附加了document
。
收到的JSON
回复有"hasAttachments": true,
。我的要求是下载邀请中发送的文件。
我需要使用我的应用程序下载这些文件,然后附加它们并将其发送到participants
。我怎么能这样做?
答案 0 :(得分:0)
我的要求是下载邀请中发送的文件。
您似乎正在使用List calendarView API来获取活动。在这种情况下,您应该能够从响应中获取所需的Event资源的事件“id”属性,请检查"id": "string (identifier)"
。
之后,您可以通过List attachments API获取此活动的所有附件,并通过Get attachment获取特殊的附件。您可以通过contentBytes
属性获取附加文件的二进制内容,该属性包含文件的base64编码内容。如果您的附件是fileAttachment resource type。例如,如果附件是.txt
文件,您可以将其下载并保存在应用程序local folder中,如下所示:
HttpClient client = new HttpClient();
string token =await AuthenticationHelper.GetTokenForUserAsync();
client.DefaultRequestHeaders.Add("Authorization", "Bearer "+token);
HttpResponseMessage httpresponse = await client.GetAsync(new Uri("https://graph.microsoft.com/v1.0/me/events/{id}/attachments/{id}"));
StorageFile downloadedfile = await ApplicationData.Current.LocalFolder.CreateFileAsync("attachment.txt",CreationCollisionOption.ReplaceExisting);
JObject resObj = JObject.Parse(await httpresponse.Content.ReadAsStringAsync());
string contentbyte = resObj["contentBytes"].ToString();
await FileIO.WriteTextAsync(downloadedfile, Encoding.UTF8.GetString(Convert.FromBase64String(contentbyte)));
更新:
如果附件不是.txt
,那么实际需要的是将base64-encode内容正确地传输到文件,例如:
StorageFile downloadedfile = await ApplicationData.Current.LocalFolder.CreateFileAsync("attachment.xlsx", CreationCollisionOption.ReplaceExisting);
string contentbyte = "contentbyte";
byte[] filecontent = Convert.FromBase64String(contentbyte);
await FileIO.WriteBytesAsync(downloadedfile, filecontent);