【问题标题】:Accessing a file located in Azure Blob, from Azure Timer Trigger Function从 Azure 计时器触发函数访问位于 Azure Blob 中的文件
【发布时间】:2018-06-08 17:27:26
【问题描述】:

我有一个 Azure 计时器触发器功能,它会生成一个 excel 文件,我需要通过电子邮件将其作为附件发送。 我已成功完成以下操作 -

  1. 创建文件并将其上传到 azure blob
  2. 发送不带附件的电子邮件(使用 SmtpClient 和 MailMessage)

如何从 Azure Blob 获取文件并将其作为附件发送?

附: 当我将文件存储在 Azure 的函数本地存储中时,我能够将其作为附件发送。但是,我想将文件的存储移动到 Azure Blob

【问题讨论】:

  • 如果我理解正确,您是在函数中本地创建文件,然后将该文件上传到 blob 存储。正确的?如果是这样,那为什么不能简单地将本地文件附加到电子邮件中?
  • @GauravMantri 不,在上传到 blob 之前,我不会在本地存储文件。我直接将字节数组上传到blob。
  • 请看这个答案:stackoverflow.com/questions/5336239/…。本质上,您将从字节数组创建一个内存流。

标签: c# .net azure azure-blob-storage


【解决方案1】:

如何从 Azure Blob 获取文件并将其作为附件发送?

根据我的理解,您可以将 blob 下载到函数中的临时本地文件中,如下所示:

// Save blob contents to a file.
using (var fileStream = System.IO.File.OpenWrite(@"path\myfile"))
{
    blockBlob.DownloadToStream(fileStream);
}

然后,您可以按如下方式构造您的Attachment

System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment("{file-path}");

或者您可以直接将您的 blob 下载到 MemoryStream,如下所示:

using (var memoryStream = new MemoryStream())
{
    blockBlob2.DownloadToStream(memoryStream);
    memoryStream.Position = 0;
    System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(memoryStream , "{contentType}");
}

您可以关注Download blobs的详细信息。

【讨论】:

    【解决方案2】:
            var blob_Archive = Environment.GetEnvironmentVariable("blobName", EnvironmentVariableTarget.Process);
            var archiveSheetFile = $"{blob_Archive}/FileName-{DateTime.UtcNow:ddMMyyyy_hh.mm}.csv";
    
            using (var txReader = await binder.BindAsync<TextReader>(
            new BlobAttribute(file2read, FileAccess.Read)))
            {
                if(txReader != null)
                sBlobNotification = await txReader.ReadToEndAsync();
            }
            log.LogInformation($"{sBlobNotification}");
    

    您可以在定时器触发函数中编写上述代码并获取blob内容。 这有帮助吗!!

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 2021-03-26
      • 1970-01-01
      • 2019-01-02
      • 2021-10-08
      • 2022-01-08
      相关资源
      最近更新 更多