c# - 使用 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。
我的问题是,这些绑定是否有“全部获取”或“递归获取”?可以在容器中获取所有文件和文件夹的东西?
如果不是通过绑定,也许是通过代码?
解决方案
它不可能通过 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方法。
推荐阅读
- excel - PowerView 中的列顺序
- android - 由于可变大小的图像加载,聊天滚动(回收站视图)不流畅?
- php - 如何根据上传的文件名找到 S3 对象键
- python - 将 pandas 间隔数据框减少为 12 个月 x 24 小时汇总值的表
- couchdb - 如何同时用范围约束一个键并用精确匹配约束另一个键?
- c - 如何优化我发送的套接字消息的大小,而不会丢失任何数据?
- hyperledger-fabric - 在排序阶段,多个事务被批处理在一起。排序和批处理是如何发生的?
- php - PhalconPHP - 如何返回单一类型的原始 SQL 语句结果
- hadoop - Hive 是否支持基于表达式的分区?
- python - 如何在 Django 的 DetailView 中拥有来自另一个模型的表单?