我将blob存储在虚拟文件夹中,使用当前日期作为文件夹名称。 我需要blob的名称是唯一的,但我还需要能够在文件夹中搜索以选择某些文件(例如文件名startswith(id))。
以下是我用来存储blob的代码。
#r "Microsoft.WindowsAzure.Storage"
using Microsoft.WindowsAzure.Storage.Blob;
public static async Task Run(string input, Binder binder, TraceWriter log)
{
string path =
"container/{DateTime.UtcNow.ToString("yyyy/MM/dd/HH")}/{someid}-
{someguid}.json";
var attributes = new Attribute[]
{
new BlobAttribute(path),
new StorageAccountAttribute("<storage connection>")
};
using (var writer = await binder.BindAsync<TextWriter>(attributes))
{
writer.Write(input);
}
}
我知道可以使用SDK搜索文件夹,但我真的希望能够使用命令式绑定对blob存储中的虚拟文件夹进行搜索。例如。我想获取过去5天内存储的所有blob。
有什么想法吗?
答案 0 :(得分:0)
据我所知,目前azure storage listblob方法并不支持按时搜索。
首先,azure SDK还使用了azure storage rest api listblob方法。它只支持前缀作为过滤器。
所以我建议您尝试使用日期作为前缀来设置文件。
e.g 2017-2-15-xxxxx.txt
然后你可以使用&#34; 2017-2&#34;作为列出所有blob的前缀,以&#34; 2017-2&#34;。
开头有关如何使用azure storage SDK的更多详细信息,您可以参考此code sample。
答案 1 :(得分:0)
如果要使用blob触发器处理新blob,可以使用“名称模式”,类似"path": "input/original-{name}"
。
更多详情:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob
您可以在azure存储表中存储创建的时间和blob路径。因此,在步骤1中,您将获得时间范围内的所有blob路径,并且在步骤2中,您将获得所有blob。这种方法需要额外的代码。