【问题标题】:Is there a way to change blob path in a blob binding for azure function?有没有办法在 azure 函数的 blob 绑定中更改 blob 路径?
【发布时间】:2019-01-08 09:15:08
【问题描述】:

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

Blob 绑定:

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

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

【问题讨论】:

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


    【解决方案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");
            }
    

    【讨论】:

    • 这个方法好像只能上传Http和时间触发功能。当我尝试使用 Cosmos 触发器时没有任何反应,你遇到过这些问题吗?
    • @BjørnMarcusMotzfeldtAuberg 以前没有遇到过这个问题,尽管我们在函数中使用了什么触发器,活页夹应该可以工作。您介意分享不起作用的代码吗?最好发布一个新帖子,因为它似乎与这个不同。
    【解决方案2】:

    如果 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

    【讨论】:

    • 不错的解决方案!添加链接和 JSON 格式要求。
    猜你喜欢
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2020-08-15
    • 2022-01-23
    相关资源
    最近更新 更多