如何在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
。
SaaS文件触发器绑定不处理对可变子路径的监视。路径表达式必须是folder/{fileName}
的形式,并且文件组件将只绑定到该特定文件夹中的单个文件,而不是子文件夹。文件名前的静态路径可以包含子文件夹,例如folder/subFolder/{fileName}
。
你可以用你描述的方式使用IBinder
来写一个或多个文件。应该可以了