Microsoft Graph - 通过 C# 保存文件附件?
Microsoft Graph - Saving file attachments through C#?
是否可以通过 Microsoft Graph 在 C# 中保存文件附件API?
我知道我可以获得附件的属性 (https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/attachment_get) - 我们也可以将它保存到特定位置吗?
当您获取附件属性时,它们将包含有关附件的信息。
有 three types 个附件。
首先,检查属性@odata.type
中的附件类型并进行相应处理。
对于 fileAttachment
类型,它们包含一个 contentLocation
属性,即 the URI of the attachment contents.
您可以从 URI 下载附件。
一旦你有特定的 Microsoft Graph 消息,你可以,例如将其作为参数传递给方法。然后您需要发出另一个请求以通过消息 ID 获取附件,遍历附件并将其转换为 FileAttachment
以访问 ContentBytes
属性 最后将此字节数组保存到文件中.
private static async Task SaveAttachments(Message message)
{
var attachments =
await _client.Me.MailFolders.Inbox.Messages[message.Id].Attachments.Request().GetAsync();
foreach (var attachment in attachments.CurrentPage)
{
if (attachment.GetType() == typeof(FileAttachment))
{
var item = (FileAttachment)attachment; // Cast from Attachment
var folder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
var filePath = Path.Combine(folder, item.Name);
System.IO.File.WriteAllBytes(filePath, item.ContentBytes);
}
}
}
是否可以通过 Microsoft Graph 在 C# 中保存文件附件API?
我知道我可以获得附件的属性 (https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/attachment_get) - 我们也可以将它保存到特定位置吗?
当您获取附件属性时,它们将包含有关附件的信息。
有 three types 个附件。
首先,检查属性@odata.type
中的附件类型并进行相应处理。
对于 fileAttachment
类型,它们包含一个 contentLocation
属性,即 the URI of the attachment contents.
您可以从 URI 下载附件。
一旦你有特定的 Microsoft Graph 消息,你可以,例如将其作为参数传递给方法。然后您需要发出另一个请求以通过消息 ID 获取附件,遍历附件并将其转换为 FileAttachment
以访问 ContentBytes
属性 最后将此字节数组保存到文件中.
private static async Task SaveAttachments(Message message)
{
var attachments =
await _client.Me.MailFolders.Inbox.Messages[message.Id].Attachments.Request().GetAsync();
foreach (var attachment in attachments.CurrentPage)
{
if (attachment.GetType() == typeof(FileAttachment))
{
var item = (FileAttachment)attachment; // Cast from Attachment
var folder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
var filePath = Path.Combine(folder, item.Name);
System.IO.File.WriteAllBytes(filePath, item.ContentBytes);
}
}
}