2017-03-23 58 views
1

我有一個Azure函數,每當圖像上傳到Azure存儲帳戶中的容器時都會觸發該函數。我讀了流,做了一些行動。Azure函數:C#獲取blob URI

我也想得到觸發函數的blob的uri,但我該怎麼做?我必須使用額外的輸入/輸出嗎?

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

回答

4

如果你真的想要完整的URI,而不是僅僅斑點相對路徑(這string blobTrigger會給你),你需要做這樣的事情:

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

在這一點上,你可以使用CloudBlockBlob object model來獲取URI(例如StorageUri或其他一些相關的道具)並獲得流(例如BeginDownloadToStream)。請注意,當你這樣做時,你不能再直接接收Stream作爲輸入參數。

+1

我曾嘗試使用CloudBlockBlob綁定,但獲得**無法綁定BlobTrigger以鍵入'Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob'**錯誤。希望對此有幫助。 – Joy

1

在你的綁定,您可以爲BLOB路徑定義一個變量名:

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

然後加入name作爲另一個函數的參數:

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

基礎上webjobs' documentation for blobs,您可以簡單地添加一個string blobTrigger參數:

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