Encoding 使用Azure函数外部文件绑定时损坏文件

Encoding 使用Azure函数外部文件绑定时损坏文件,encoding,utf-8,binding,onedrive,azure-functions,Encoding,Utf 8,Binding,Onedrive,Azure Functions,我在Azure函数中运行一个非常简单的ExternalFileTrigger场景,我将一个创建的映像文件从一个onedrive目录复制到另一个 function.json { "bindings": [ { "type": "apiHubFileTrigger", "name": "input", "direction": "in", "path": "Bilder/Org/{name}", "connection"

我在Azure函数中运行一个非常简单的ExternalFileTrigger场景,我将一个创建的映像文件从一个onedrive目录复制到另一个

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 binding ExternalFileTrigger使用ANSI吗?或者如何解决这个问题?

更新2019:当前版本的Azure函数似乎不推荐使用外部文件绑定


如果要按原样复制文件,或对文件内容执行更细粒度的二进制操作,我建议对输入和输出绑定使用
Stream
type而不是
string

公共静态异步任务运行(流输入、流输出、字符串名称、TraceWriter日志)
{
使用(MemoryStream ms=new MemoryStream())
{
输入。复制到(毫秒);
var byteArray=ms.ToArray();
wait output.WriteAsync(byteArray,0,byteArray.Length);
}
Info($“C#文件触发器函数已处理:{name}”);
}
function.json
中更改输出绑定:

  "name": "output",
此函数将执行文件的精确二进制复制,无需转换


您可以在中查看可用于绑定的其他类型(请参见“用法”部分)。

使用流时,目标文件将有0个字节大。在返回之前,我试图将位置设置为0,但运气不佳。@MartinHolm是的,发布了一个实际效果很好的示例!试过了,正如你说的,这将是一个精确的二进制副本。谢谢,伙计。指向“外部文件绑定”的链接似乎不起作用(截至2019-07-17)。有一个重定向到,我可以看到该列表中的外部文件???检查的方式回到机器和页面已删除外部绑定。。。