【问题标题】:Microsoft Graph - Saving file attachments through C#?Microsoft Graph - 通过 C# 保存文件附件?
【发布时间】:2018-03-07 08:42:54
【问题描述】:

是否可以通过 Microsoft Graph API 在 C# 中保存文件附件?

我知道我可以获取附件的属性 (https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/attachment_get) - 我们也可以将它保存到某个位置吗?

【问题讨论】:

    标签: c# microsoft-graph-api attachment


    【解决方案1】:

    一旦你有特定的 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);
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      当您获取附件属性时,它们将包含有关附件的信息。

      three types个附件。

      首先,查看属性@odata.type中的附件类型,并进行相应处理。

      对于fileAttachment 类型,它们包含一个contentLocation 属性,即the URI of the attachment contents

      您可以从 URI 下载附件。

      【讨论】:

      • 嗨,在我的例子中,contentLocation 为 NULL。据我了解,@Tomas 的答案是另一种选择,我们在其中保存内容字节。如何在 Javascript 中做同样的事情
      猜你喜欢
      • 1970-01-01
      • 2018-06-05
      • 2022-01-06
      • 1970-01-01
      • 2021-07-04
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多