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

本文关键字:文件夹 设置 文件名 绑定 Azure Functions 文件 SaaS | 更新日期: 2023-09-27 18:08:46

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

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


我尝试了以下输出绑定:

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...");
}

我为ApiHubFileAttribute包含了Microsoft.Azure.WebJobs.Extensions.ApiHub NuGet包。我得到了错误Exception binding parameter 'output'. Microsoft.Azure.WebJobs.Extensions.ApiHub: Unsupported type:Microsoft.Azure.WebJobs.IBinder

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

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

你可以用你描述的方式使用IBinder来写一个或多个文件。应该可以了