首页 > 解决方案 > 使用 Azure 函数绑定从 Blob 存储中获取多个文件

问题描述

有没有办法在不事先知道文件或文件夹名称的情况下从 azure 函数绑定中获取多个文件?对于不同的功能,我有这个:

 public async Task<Activity> GetActivity([ActivityTrigger] Activity activity,
     [Blob("activities/migration/{activity.Id}", FileAccess.Read)] Stream activityBlob,
     ILogger log)
 {

 }

这将根据活动类中的 id 从迁移文件夹中获取文件。

但是对于另一个功能,文件夹中的某些文件将有大量文件,其ID不会提前知道。所以这不能作为参数传递来访问 blob。

我的问题是,这些绑定是否有“全部获取”或“递归获取”?可以在容器中获取所有文件和文件夹的东西?

如果不是通过绑定,也许是通过代码?

标签: c#azureazure-functions

解决方案


它不可能通过 blob 输入绑定,但您可以使用动态输入绑定从容器中获取所有文件。请参考以下代码:-

public async Task<Activity> Run(
            [ActivityTrigger] Activity activity,
            IBinder binder,
            ILogger log)
        {
            var blobs= await binder.BindAsync<IEnumerable<CloudBlockBlob>>(new BlobAttribute(blobPath: $"activities/migration")
            {
                Connection = "AzureWebJobsStorage"
            });
            
        }

这将为您提供容器中所有 blob 的列表,然后您可能可以进一步进行操作,另一种方法是在代码中的容器引用上使用ListBlobsSegmentedAsync方法。


推荐阅读