Azure 函数:C# 获取 blob URI

Azure Functions: C# Get blob URI

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

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

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

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

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

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

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

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

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

如果你真的想要完整的 URI,而不是仅仅 blob 相对路径(string blobTrigger 会给你),你需要做这样的事情:

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

此时,您可以使用 CloudBlockBlob object model 获取 URI(例如 StorageUri 或其他一些相关属性)和获取流(例如 BeginDownloadToStream)。请注意,当您这样做时,您将无法再直接接收 Stream 作为输入参数。