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.
- 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
- Explicit and Implicit SSL connections are supported for the control and data connections using .NET's
- 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 ([email protected], 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
awaitfor all operations
- Asynchronous methods for .NET 4.0 and below using
- All asynchronous methods can be cancelled midway by passing a
- All asynchronous methods honor the
ReadTimeoutand 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
- 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
- Easily add support for more proxy types (simply extend
- Easily add unsupported directory listing parsers (see the
- Easily add custom logging/tracing functionality using
- Easily add your own Powershell commands by extending the scripts in
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.
|.NET Standard 1.4||netstandard1.4|
|.NET Standard 1.6||netstandard1.6|
|.NET Standard 2.0||netstandard2.0|
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 VS 2017 Project. You will need VS 2017 to build or contribute to FluentFTP.
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.
Special thanks to these awesome people who helped create FluentFTP!
FluentFTP is supported by these generous organizations:
|JetBrains provides cutting-edge IDE and developer productivity tools.||Balsamiq provides rapid and effective wireframing and UI design tools.||YourKit provides a market-leading intelligent Java Profiler and .NET Profiler.|