【问题标题】:Azure Functions: C# Get blob URIAzure Functions:C# 获取 blob URI
【发布时间】:2017-03-24 00:59:41
【问题描述】:

我有一个 Azure 函数,只要将图像上传到 Azure 存储帐户中的容器,就会触发该函数。我阅读了信息流并执行了一些操作。

我还想获取触发函数的 blob 的 uri,但我该怎么做呢?我必须使用额外的输入/输出吗?

public static void Run(Stream myBlob, TraceWriter log) 
{
    //get byte array of the stream
    byte[] image = ReadStream(myBlob);
    // ...
}

【问题讨论】:

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


    【解决方案1】:

    如果您真的想要完整的 URI,而不仅仅是 blob 相对路径(string blobTrigger 会给您),您需要执行以下操作:

    public static void Run(CloudBlockBlob myBlob, TraceWriter log) { // ... }

    此时,您可以使用CloudBlockBlob object model 来获取URI(例如StorageUri 或其他一些相关的道具)和获取流(例如BeginDownloadToStream)。请注意,执行此操作时,您不能再直接接收 Stream 作为输入参数。

    【讨论】:

    • 我确实尝试使用 CloudBlockBlob 绑定,但得到 Can't bind BlobTrigger to type 'Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob' 错误。希望能对此提供任何帮助。
    【解决方案2】:

    基于 webjobs 的documentation for blobs,您可以简单地添加一个string blobTrigger 参数:

    public static void Run(Stream myBlob, string blobTrigger, TraceWriter log) 
    

    【讨论】:

      【解决方案3】:

      在您的绑定中,您可以为 blob 路径定义一个变量名:

      "path": "foo/{name}.bar",
      

      然后添加name作为另一个函数参数:

      public static void Run(Stream myBlob, string name, TraceWriter log) 
      

      【讨论】:

        猜你喜欢
        • 2018-06-05
        • 2023-03-31
        • 2019-04-25
        • 1970-01-01
        • 2021-05-25
        • 2019-11-26
        • 2020-09-03
        • 2018-05-07
        • 2015-05-27
        相关资源
        最近更新 更多