2016-11-22 45 views
3

我創建了一個帶有blob存儲觸發器的Azure函數 - 我想處理一個文件,然後將該文件轉儲到另一個blob存儲容器。Azure函數 - Blob流輸出綁定

在我想這應該是這樣的最簡單的例子:

public static void Run(Stream blob, string name, out Stream outputBlob, TraceWriter log) 
{ 
    outputBlob = blob; 
} 

這是我的綁定:

{ 
    "bindings": [ 
    { 
     "name": "blob", 
     "type": "blobTrigger", 
     "direction": "in", 
     "path": "input/{name}", 
     "connection": "wlimportstaging_STORAGE" 
    }, 
    { 
     "name": "outputBlob", 
     "type": "blob", 
     "direction": "out", 
     "path": "original/{name}", 
     "connection": "wlimportstaging_STORAGE" 
    } 
    ], 
    "disabled": false 
} 

我從文檔閱讀,如果你返回POCO它會將其序列化爲JSON。

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob#output-usage

這似乎表明您可以輸出到一個流 - 我剛纔似乎得到:

Microsoft.Azure.WebJobs.Host: Can't bind Blob to type 'System.IO.Stream&

請幫助!

回答

2

這工作正常。如果有更好的方法,我會非常感興趣。

public static async Task Run(Stream blob, string name, Stream outBlob, TraceWriter log) 
{ 
    using (MemoryStream ms = new MemoryStream()) 
    { 
     blob.CopyTo(ms); 
     var byteArray = ms.ToArray(); 
     await outBlob.WriteAsync(byteArray, 0, byteArray.Length); 
    } 
} 
+1

假設您需要對流中的原始字節進行操作,那麼是的,這可能是最好的方法。 – mathewc

相關問題