Loic.robinrodricks.FluentFTP
1.0.0
dotnet add package Loic.robinrodricks.FluentFTP --version 1.0.0
NuGet\Install-Package Loic.robinrodricks.FluentFTP -Version 1.0.0
<PackageReference Include="Loic.robinrodricks.FluentFTP" Version="1.0.0" />
<PackageVersion Include="Loic.robinrodricks.FluentFTP" Version="1.0.0" />
<PackageReference Include="Loic.robinrodricks.FluentFTP" />
paket add Loic.robinrodricks.FluentFTP --version 1.0.0
#r "nuget: Loic.robinrodricks.FluentFTP, 1.0.0"
#addin nuget:?package=Loic.robinrodricks.FluentFTP&version=1.0.0
#tool nuget:?package=Loic.robinrodricks.FluentFTP&version=1.0.0
FluentFTP is a fully managed FTP and FTPS library for .NET & .NET Standard, optimized for speed. It provides extensive FTP commands, File uploads/downloads, SSL/TLS connections, Automatic directory listing parsing, File hashing/checksums, File permissions/CHMOD, FTP proxies, FXP transfers, UTF-8 support, Async/await support, Powershell support and more.
It is written entirely in C#, with no external dependencies. FluentFTP is released under the permissive MIT License, so it can be used in both proprietary and free/open source applications.
Features
- Full support for FTP, FXP, FTPS (FTP over SSL), FTPS with client certificates and FTPS with CCC (for FTP firewalls)
- File management:
- File and directory listing for all major server types (Unix, Windows/IIS, Azure, Pure-FTPd, ProFTPD, Vax, VMS, OpenVMS, Tandem, HP NonStop Guardian, IBM OS/400, AS400, Windows CE, Serv-U, etc)
- Fully recursive directory listing and directory deletion (manual recursion and server-side recursion)
- Easily upload and download a file from the server with progress tracking
- Easily upload and download a directory from the server with easy synchronization modes
- Easily transfer a file or folder directly from one server to another using the FXP protocol
- Conditionally transfer files using rule based whitelisting and blacklisting
- Automatically verify the hash of a file & retry transfer if hash mismatches
- Configurable error handling (ignore/abort/throw) for multi-file transfers
- Easily read and write file data from the server using standard streams
- Create, append, read, write, rename, move and delete files and folders
- Recursively deletes folders and all its contents
- Get file/folder info (exists, size, security flags, modified date/time)
- Get and set file permissions (owner, group, other)
- Absolute or relative paths (relative to the "working directory")
- Compare a local file against a remote file using the hash/checksum (MD5, CRC32, SHA-1, SHA-256, SHA-512)
- Dereference of symbolic links to calculate the linked file/folder
- Throttling of uploads and downloads with configurable speed limit
- FTP protocol:
- Automatic detection of working connection settings and automatic connection negotiation
- Automatic detection of the FTP server software and its capabilities
- Extensive support for FTP commands, including some server-specific commands
- Easily send server-specific FTP commands using the
Execute()
method - Explicit and Implicit SSL connections are supported for the control and data connections using .NET's
SslStream
- Passive and active data connections (PASV, EPSV, PORT and EPRT)
- Supports Unix CHMOD, PRET, ProFTPD's SITE MKDIR and RMDIR commands, Serv-U's RMDA command
- Supports FTP Proxies (User@Host, HTTP 1.1, BlueCoat)
- FTP command logging using
TraceListeners
(passwords omitted) to trace or log output to a file - SFTP is not supported as it is FTP over SSH, a completely different protocol (use SSH.NET for that)
- Asynchronous support:
- Synchronous and asynchronous methods using
async
/await
for all operations - Asynchronous methods for .NET 4.0 and below using
IAsyncResult
pattern (Begin*/End*) - Asynchronous support for the
IAsyncEnumerable
pattern forGetListing
methods (seeGetListingAsyncEnumerable
) - All asynchronous methods can be cancelled midway by passing a
CancellationToken
- All asynchronous methods honor the
ReadTimeout
and automatically cancel themselves if timed out - Improves thread safety by cloning the FTP control connection for file transfers (optional)
- Implements its own internal locking in an effort to keep transactions synchronized
- Synchronous and asynchronous methods using
- Extensible:
- Easily add support for custom non-standard FTP servers (see the Custom Servers page)
- Easily add support for more file or directory filtering rules (simply extend
FtpRule
) - Easily add support for more proxy types (simply extend
FtpClientProxy
) - Easily add unsupported directory listing parsers (see the
CustomParser
example) - Easily add custom logging/tracing functionality using
FtpTrace.AddListener
- Easily add your own Powershell commands by extending the scripts in
FluentFTP.ps1
Releases
Stable binaries are released on NuGet, and contain everything you need to use FTP/FTPS in your .Net/CLR application. For usage see the Quick Start Example and the Documentation wiki.
- Nuget (latest)
- Release Notes (features and fixes per release)
FluentFTP works on .NET and .NET Standard/.NET Core.
Platform | Binaries Folder |
---|---|
.NET 2.0 | net20 |
.NET 3.5 | net35 |
.NET 4.0 | net40 |
.NET 4.5 | net45 |
.NET 5.0 | net50 |
.NET Standard 1.4 | netstandard1.4 |
.NET Standard 1.6 | netstandard1.6 |
.NET Standard 2.0 | netstandard2.0 |
.NET Standard 2.1 | netstandard2.1 |
FluentFTP is also supported on these platforms: (via .NET Standard)
- Mono 4.6
- Xamarin.iOS 10.0
- Xamarin.Android 10.0
- Universal Windows Platform 10.0
Binaries for all platforms are built from a single Visual Studio 2019 Project. You will need VS 2019 to build or contribute to FluentFTP.
Example Usage
To get started, check out the Quick start example in C#.
We also have extensive examples for all methods in C# and VB.NET.
Documentation and FAQs
Check the Wiki.
Contributors
Special thanks to these awesome people who helped create FluentFTP!
<a href="https://github.com/robinrodricks/FluentFTP/graphs/contributors"> <img src="https://github.com/robinrodricks/FluentFTP/raw/master/.github/contributors.png" /> </a>
Supporters
FluentFTP is supported by these generous organizations:
<table> <tr> <td width="200px"> <a href="https://www.jetbrains.com/"> <img src="https://github.com/robinrodricks/FluentFTP/raw/master/.github/jetbrains-logo.png" /> </a> </td> <td width="200px"> <a href="https://www.balsamiq.com/"> <img src="https://github.com/robinrodricks/FluentFTP/raw/master/.github/balsamiq-logo.png" /> </a> </td> <td width="200px"> <a href="https://www.yourkit.com/"> <img src="https://github.com/robinrodricks/FluentFTP/raw/master/.github/yourkit-logo.png" /> </a> </td> </tr> <tr> <td width="200px"> JetBrains provides cutting-edge IDE and developer productivity tools. </td> <td width="200px"> Balsamiq provides rapid and effective wireframing and UI design tools. </td> <td width="200px"> YourKit provides a market-leading intelligent <a href="https://www.yourkit.com/features/">Java Profiler</a> and <a href="https://www.yourkit.com/dotnet/features/">.NET Profiler</a>. </td> </tr> </table>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. 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. |
-
net5.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 1 | 7/31/2021 |