如何在Azure Functions SaaS文件绑定中设置文件夹名称和文件名?

时间:2016-09-23 21:10:27

标签: c# azure-webjobssdk azure-functions

我正在尝试使用SaaS文件触发器来侦听FTP站点中的新文件。首先,你甚至可以定义一个变量文件夹,比如"path": "inputTest/{folder}/{fileName}"?或者,也许,听取所有子文件夹中的新文件,并在文件名中包含路径,例如inputTest/{file} file可能等于"subfolder/fileName.txt"?这里的想法是我将有多个客户端将文件上传到他们自己的目录中,我不想为每个客户端创建一个新的函数/触发器。

输出也是如此。我想要一个可以写入各种文件夹的SasS文件绑定。我想我可以使用here描述的方法,但我仍然需要测试它。我的想法是,我想一次流读取一行的输入文件,以某种方式处理该行,并将其写入另一个文件。本质上是一种转变。可能还有其他方法可以做到这一点,但我想更好地理解这种绑定。

更新

我尝试了以下输出绑定:

using System;
using Microsoft.Azure.WebJobs;

public static void Run(string input, IBinder output, TraceWriter log)
{
    string connectionStringSetting = Environment.GetEnvironmentVariable(
        "ftp_FTP", EnvironmentVariableTarget.Process);
    var path = "InputTest/SubFolder/fileName.txt";
    log.Info($"Writing to {path}...");
    using (var writer = output.Bind<TextWriter>(
        new ApiHubFileAttribute(connectionStringSetting, path)))
    {
        writer.Write(input);
    }
    log.Info("Done writing...");
}

我为Microsoft.Azure.WebJobs.Extensions.ApiHub添加了ApiHubFileAttribute NuGet包。我收到错误Exception binding parameter 'output'. Microsoft.Azure.WebJobs.Extensions.ApiHub: Unsupported type:Microsoft.Azure.WebJobs.IBinder。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

SaaS文件触发器绑定不处理可变子路径的监视。路径表达式的格式必须为folder/{fileName},文件组件只会绑定到该特定文件夹中的单个文件,而不是子文件夹。文件名之前的静态路径可以包括子文件夹,例如folder/subFolder/{fileName}

您可以按照描述的方式使用IBinder来编写一个或多个文件。这应该有用。