使用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的参数传递。

我的问题是,这些绑定是否有"get all"或"get recursive"?可以获取容器中所有文件和文件夹的东西?

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

通过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方法。

最新更新