Azureで非常に簡単なExternalFileTriggerシナリオを実行しています。作成した画像ファイルをonedriveディレクトリから別のディレクトリにコピーしました。Azureを使用するとファイルが破損する外部ファイルのバインド
function.json
{
"bindings": [
{
"type": "apiHubFileTrigger",
"name": "input",
"direction": "in",
"path": "Bilder/Org/{name}",
"connection": "onedrive_ONEDRIVE"
},
{
"type": "apiHubFile",
"name": "$return",
"direction": "out",
"path": "Bilder/Minimized/{name}",
"connection": "onedrive_ONEDRIVE"
}
],
"disabled": false
}
run.csx
using System;
public static string Run(string input, string name, TraceWriter log)
{
log.Info($"C# File trigger function processed: {name}");
return input;
}
すべての物事がうまく動作するようですが、私は壊れ、新たな出力画像ファイル。サイズはほぼ倍の大きさです。 エンコーディングを見ると、元のファイルはANSIにありますが、Azure関数の新しい生成ファイルはUTF-8です。 ソースコードがUTF-8のときにテキストファイルを使用しているときにうまくいきます。
Azureを強制的にバインドしてExternalFileTriggerにANSIを使用させることはできますか?またはこれを解決する方法?
public static async Task Run(Stream input, Stream output, string name, TraceWriter log)
{
using (MemoryStream ms = new MemoryStream())
{
input.CopyTo(ms);
var byteArray = ms.ToArray();
await output.WriteAsync(byteArray, 0, byteArray.Length);
}
log.Info($"C# File trigger function processed: {name}");
}
:あなたがあるとして、ファイルをコピーするか、ファイルの内容によりきめ細かいバイナリの操作を行いたい場合は
ストリームを使用する場合、ターゲットファイルは0バイト大きくなります。私は運がないリターンの前にポジションを0にしようとしました。 –
@MartinHolmはい、実際に動作するサンプルを投稿 – Mikhail
素晴らしい!それを試して、あなたが言ったように、これは正確なバイナリコピーになります。ありがとうございます。 –