Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft Graph-通过C#保存文件附件?_C#_Microsoft Graph Api_Attachment - Fatal编程技术网

Microsoft Graph-通过C#保存文件附件?

Microsoft Graph-通过C#保存文件附件?,c#,microsoft-graph-api,attachment,C#,Microsoft Graph Api,Attachment,是否可以通过Microsoft Graph API以C#格式保存文件附件 我知道我可以获取附件的属性()-我们也可以将其保存到某个位置吗?获取附件属性时,它们将包含有关附件的信息 有很多附件 首先,检查属性'@odata.type中的附件类型,并相应地处理它们 对于fileAttachment类型,它们包含一个contentLocation属性,即 您可以从URI下载附件。一旦您收到特定的Microsoft Graph消息,您可以将其作为参数传递给方法。然后,您需要发出另一个请求以按邮件Id获取

是否可以通过Microsoft Graph API以C#格式保存文件附件


我知道我可以获取附件的属性()-我们也可以将其保存到某个位置吗?

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

有很多附件

首先,检查属性'
@odata.type
中的附件类型,并相应地处理它们

对于
fileAttachment
类型,它们包含一个
contentLocation
属性,即


您可以从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);
        }
    }
}

嗨,在我的例子中,contentLocation是空的。据我所知,@Tomas给出的答案是另一种选择,在这里我们保存的是contentbytes。如何在Javascript中实现同样的功能