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

関連する問題