有没有办法为azure函数更改blob绑定中的blob路径?

时间:2019-01-08 09:15:08

标签: c# azure azure-functions azure-blob-storage

我正在使用azure函数,该函数会将多个具有不同名称的xml文件保存到同一blob容器中。我想使用其他绑定中的数据来格式化名称。

Blob绑定:

[Blob("outbound/", FileAccess.Write, Connection = 
Settings.InbundBlobConnectionString)] Stream outboundBlob

有没有一种方法可以使用代码来操纵Blob路径?

2 个答案:

答案 0 :(得分:1)

我们可以使用imperative binding pattern。在函数方法签名中,添加Binder binder,删除Blob输入绑定,然后尝试下面的代码。

        string myBlobName = "valueGotFromOtherBinding";
        var attributes = new Attribute[]
        {
            new BlobAttribute($"outbound/{myBlobName}", FileAccess.Write),
            new StorageAccountAttribute(Settings.InbundBlobConnectionString)
        };
        using (var writer = await binder.BindAsync<TextWriter>(attributes))
        {
            await writer.WriteAsync("Conetent");
        }

答案 1 :(得分:1)

如果blobName值位于“触发器”绑定JSON有效负载中(例如,在消息/请求主体中),则可以使用POCO对象,请参见以下内容:

[QueueTrigger("myQueueName", Connection = "mySTORAGE")] POCO item,
[Blob("outbound/{blobName}", FileAccess.Write, Connection = Settings.InbundBlobConnectionString)] Stream outboundBlob

   …

public class POCO
{
  // ...
  public string blobName { get; set;}
}

这里是doc