2016-11-22 53 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

相关问题