WebJobs.Extensions.Ftp
4.0.9.1
dotnet add package WebJobs.Extensions.Ftp --version 4.0.9.1
NuGet\Install-Package WebJobs.Extensions.Ftp -Version 4.0.9.1
<PackageReference Include="WebJobs.Extensions.Ftp" Version="4.0.9.1" />
<PackageVersion Include="WebJobs.Extensions.Ftp" Version="4.0.9.1" />
<PackageReference Include="WebJobs.Extensions.Ftp" />
paket add WebJobs.Extensions.Ftp --version 4.0.9.1
#r "nuget: WebJobs.Extensions.Ftp, 4.0.9.1"
#:package WebJobs.Extensions.Ftp@4.0.9.1
#addin nuget:?package=WebJobs.Extensions.Ftp&version=4.0.9.1
#tool nuget:?package=WebJobs.Extensions.Ftp&version=4.0.9.1
WebJobs.Extensions.Ftp
An extension for WebJobs which uses FluentFTP to support:
- Ftp Trigger on a new
FtpFile
,FtpFile[]
,FtpStream
andFtpStream[]
. - Ftp Bindings on:
IAsyncCollector
,IFtpClient
,FtpFile
andFtpStream
.
🔧 Usage
Configuration
Add a FtpConnection
property with the url to the FTP server.
{
"Values": {
"FtpConnection": "ftp://testuser:mypwd@localhost"
}
}
Ftp Triggers
Trigger on FtpItem
[FunctionName("FtpTriggerFtpFile")]
public static void RunFtpTriggerFtpFile(
[FtpTrigger(Connection = "FtpConnection", Folder = "inbox", PollingInterval = "30s")] FtpFile ftpItem,
ILogger log)
{
log.LogInformation($"{ftpItem.GetType()} {ftpItem.Name} {ftpItem.FullName} {ftpItem.Size} {ftpItem.Content?.Length}");
}
Trigger on FtpStream
[FunctionName("FtpTriggerFtpStream")]
public static async Task RunFtpTriggerFtpStream(
[FtpTrigger(Connection = "FtpConnection", Folder = "inbox")] FtpStream ftpStream,
ILogger log)
{
log.LogInformation($"{ftpStream.GetType()} {ftpStream.Name} {ftpStream.FullName} {ftpStream.Size} {ftpStream.Stream?.Length}");
}
Ftp Binding
Binding on FtpFile
[FunctionName("FtpBindingFtpFile")]
public static void RunBindingFtpFile(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
[Ftp(Connection = "FtpConnection", Folder = "inbox")] out FtpFile item,
ILogger log)
{
string msg = req.Query["message"];
log.LogInformation($"Received message {msg}");
item = new FtpFile
{
Name = "stef1.txt",
Content = Encoding.UTF8.GetBytes(msg)
};
}
Binding on FtpStream
[FunctionName("FtpBindingFtpStream")]
public static void RunBindingFtpStream(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
[Ftp(Connection = "FtpConnection", Folder = "inbox")] out FtpStream item,
ILogger log)
{
string msg = req.Query["message"];
log.LogInformation($"Received message {msg}");
item = new FtpStream
{
Name = "stef1.txt",
Stream = new MemoryStream(Encoding.UTF8.GetBytes(msg))
};
}
Binding on IAsyncCollector
[FunctionName("BindingIAsyncCollector")]
public static async Task RunBindingIAsyncCollector(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
[Ftp(Connection = "FtpConnection", Folder = "inbox")] IAsyncCollector<FtpFile> collector,
ILogger log)
{
string msg = req.Query["message"];
log.LogInformation($"Received message {msg}");
var item = new FtpFile
{
Name = "stef2.txt",
Content = Encoding.UTF8.GetBytes(msg)
};
await collector.AddAsync(item);
}
Combine Ftp Trigger and Ftp Binding
The following example shows how to combine a trigger and a binding to process and delete a file.
The IFtpClient
is exposed here, which allows full access to the FTP server.
[FunctionName("FtpTriggerSampleWithClient")]
public static void RunFtpTriggerSampleWithClient(
[FtpTrigger(Connection = "FtpConnection", Folder = "inbox", PollingIntervalInSeconds = 30, IncludeContent = false)] FtpFile ftpItem,
[Ftp(Connection = "FtpConnection", Folder = "inbox")] IFtpClient client,
ILogger log)
{
// Do some processing with the FtpFile ...
client.DeleteFile(ftpItem.FullName);
}
Sponsors
Entity Framework Extensions and Dapper Plus are major sponsors and proud to contribute to the development of WebJobs.Extensions.Ftp.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- FluentFTP (>= 37.0.2)
- Microsoft.Azure.WebJobs.Extensions (>= 4.0.1)
- Microsoft.Extensions.Options.DataAnnotations (>= 3.1.29)
- System.Configuration.ConfigurationManager (>= 4.7.0)
- TinyMapper (>= 3.0.3)
-
.NETStandard 2.1
- FluentFTP (>= 37.0.2)
- Microsoft.Azure.WebJobs.Extensions (>= 4.0.1)
- Microsoft.Extensions.Options.DataAnnotations (>= 3.1.29)
- System.Configuration.ConfigurationManager (>= 4.7.0)
- TinyMapper (>= 3.0.3)
-
net6.0
- FluentFTP (>= 37.0.2)
- Microsoft.Azure.WebJobs.Extensions (>= 4.0.1)
- Microsoft.Extensions.Options.DataAnnotations (>= 3.1.29)
- System.Configuration.ConfigurationManager (>= 4.7.0)
- TinyMapper (>= 3.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
# 4.0.9 (07 October 2022)
- #9 Update documentation [documentation]
The full release notes can be found here: https://github.com/StefH/WebJobs.Extensions.Ftp/blob/main/ReleaseNotes.md