Lyo.Ftp.Client
1.0.11
dotnet add package Lyo.Ftp.Client --version 1.0.11
NuGet\Install-Package Lyo.Ftp.Client -Version 1.0.11
<PackageReference Include="Lyo.Ftp.Client" Version="1.0.11" />
<PackageVersion Include="Lyo.Ftp.Client" Version="1.0.11" />
<PackageReference Include="Lyo.Ftp.Client" />
paket add Lyo.Ftp.Client --version 1.0.11
#r "nuget: Lyo.Ftp.Client, 1.0.11"
#:package Lyo.Ftp.Client@1.0.11
#addin nuget:?package=Lyo.Ftp.Client&version=1.0.11
#tool nuget:?package=Lyo.Ftp.Client&version=1.0.11
Lyo.Ftp.Client
FTP/FTPS wrapper over FluentFTP for Lyo hosts and storage adapters (Lyo.IO.Temp.Ftp, Lyo.FileStorage.Ftp). Hosts should call *Async (Task + CancellationToken). Those methods use FluentFTP's async API and await-safe pool/per-client gates. Sync methods block on the async path. The client leases pooled connections, jails POSIX paths under RootRemoteDirectory via Lyo.Common.Pathing.PathHelpers, and can encrypt with FTPS. It logs through ILogger and records ftp.* metrics. Concurrent callers are fine up to MaxPooledClients. Do not share one leased Stream across threads.
Features
- Async. Prefer
*Asyncfrom hosts and adapters. Sync wrappers block on the async implementation. NoTask.Run. - Pooled leases.
MaxPooledClientsconcurrent FluentFTP clients. A per-clientSemaphoreSlimserializes ops across awaits. - Concurrent callers. The pool caps parallelism. One leased stream is not safe across threads.
- Path jail. Paths resolve under
RootRemoteDirectorywithPathStyle.Posix. - FTPS.
FtpEncryptionMode(None/Explicit/Implicit) withFtpTlsPolicy(ValidateCertificate/AcceptAny). - Logging and metrics.
ILoggerplusIMetrics(ftp.connect,ftp.operation,ftp.bytes,ftp.pool,ftp.errors).EnableMetricsopt-out usesNullMetrics. - DI.
AddFtpClient/AddFtpClientFromConfiguration.
Examples
Registration
services.AddFtpClient(o =>
{
o.Host = "ftp.example.com";
o.Username = "lyo";
o.Password = secret;
o.RootRemoteDirectory = "/data/lyo";
o.Port = PortInfo.Ftp;
o.EncryptionMode = FtpEncryptionMode.None;
});
Async upload / download
await client.UploadAsync("report.bin", bytes, ct);
var copy = await client.DownloadBytesAsync("report.bin", ct);
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Common(direct, lyo)Lyo.Exceptions(direct, lyo)Lyo.Metrics(direct, lyo)FluentFTP54.2.0(direct, third-party)Microsoft.Extensions.Configuration.Binder10.0.5(direct, microsoft)Microsoft.Extensions.DependencyInjection.Abstractions10.0.5(direct, microsoft)Microsoft.Extensions.Logging.Abstractions10.0.5(direct, microsoft)Microsoft.Extensions.Options.ConfigurationExtensions10.0.5(transitive, microsoft)System.Memory4.6.3(transitive, microsoft, netstandard2.0)System.Text.Json10.0.5(transitive, microsoft, netstandard2.0)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 is compatible. 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 was computed. |
| .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 (>= 54.2.0)
- Lyo.Common (>= 1.0.11)
- Lyo.Exceptions (>= 1.0.11)
- Lyo.Metrics (>= 1.0.11)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
-
net10.0
- FluentFTP (>= 54.2.0)
- Lyo.Common (>= 1.0.11)
- Lyo.Exceptions (>= 1.0.11)
- Lyo.Metrics (>= 1.0.11)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Lyo.Ftp.Client:
| Package | Downloads |
|---|---|
|
Lyo.FileStorage.Ftp
FTP-backed IFileStorageService using Lyo.Ftp.Client (physical IO only; no multipart/presign in v1). |
|
|
Lyo.IO.Temp.Ftp
FTP-backed IIOTempStorageProvider using Lyo.Ftp.Client. |
GitHub repositories
This package is not used by any popular GitHub repositories.