如何知道将多个文件上传到 Azure 存储 Blob 何时在 ASP.NET 内完成

how to know when uploading multiple files to the azure storage blob is finished in ASP.NET

我们正在使用 azure 函数来处理上传到 azure 存储 blob 上的文档。我们需要在成功上传 blob 上的所有文档(即一次 50 个文件)后发送一封电子邮件作为上传状态。 我们如何获得所有文件都已成功上传到我们的 blob 的状态?

我认为 Azure 中没有内置功能可以以编程方式为您提供状态或引发事件。但是,可能的解决方案如下:

  1. 在批量上传所有 50 个文件之前,创建一个 JSON 文件 其中包含将要上传的所有文件的名称。 我们将此 JSON 文件称为批处理列表。
  2. 先上传批处理列表文件,然后再上传您的所有文件 你需要上传。
  3. 通过一个轮询过程,判断Batch中的所有文件是否 列表存在于 Blob 存储中。如果没有则忽略直到下一个 你能做到的时候。一旦确定所有文件在 批处理列表存在于 blob 存储中,然后按照 你的要求。删除批处理列表文件。

这是一个基本概念。它显然可以更复杂,但我希望你明白这一点。

Azure Functions 有一个简洁的扩展 Azure Durable Functions,可让您做到这一点。您在这里寻找的是监视器模式,轮询直到满足某些条件。这是一个检查天气状态然后使用 Twilio https://docs.microsoft.com/en-gb/azure/azure-functions/durable/durable-functions-monitor 发送 SMS 的示例。

代码在 Github 上 https://github.com/Azure/azure-functions-durable-extension/tree/master/samples/csx - 查看以 E3 开头的示例。

在提供适当的 solution/recommendation 之前,需要更多详细信息。

您如何处理这些文件?

  • 您对下面概述的事件有反应吗?
  • 您是否在队列外处理这些文件,这就是为什么您看不到所有文件的原因?

您可以根据需要使用以下方法之一:

当检测到新的或更新的 blob 时,Blob 存储触发器会启动一个函数。 blob 内容作为函数的输入提供。

事件网格触发器内置了对 blob 事件的支持,也可用于在检测到新的或更新的 blob 时启动函数。有关示例,请参阅使用事件网格调整图像大小教程。

在以下情况下使用事件网格而不是 Blob 存储触发器:

  • Blob 存储帐户
  • 高比例
  • 最小化延迟