A C# WPF desktop client that transfers files to and from a remote server over the FTP protocol.
SimpleFTP is a Windows desktop application built with WPF (.NET Framework 4.8) that demonstrates data transfer over FTP. It connects to an FTP server using credentials you provide, lists the contents of the remote directory, and lets you upload local files or download remote ones — all from a single window with a live console log.
The FTP logic is implemented directly on top of the .NET FtpWebRequest and WebClient APIs (no third-party FTP library). The UI is themed with ModernWpf.
- Connect & authenticate — connect to an FTP server with a username and password; the server address, port, and credentials are entered at runtime in the UI.
- List remote directory — on connect, retrieves a detailed directory listing (
ListDirectoryDetails) and parses each entry into a file name, size, and date, displayed in a remote file-system panel. - Upload a file — browse for a local file via the Windows file dialog and upload it to the server (
UploadFile). - Download a file — type the name of a listed remote file and download it locally (
DownloadFile), with transfer progress reported in the console. - Live console log — a black-on-green terminal-style panel streams connection steps, status messages, and download progress, with a blinking cursor and a clear-log button.
- Error handling — FTP/web exceptions are caught and surfaced to the console rather than crashing the app; long file names are truncated for display.
Requires Windows with the .NET Framework 4.8 runtime. Open
SimpleFTP.slnin Visual Studio, restore the NuGet packages, build, and run.
- Launch the application.
- Fill in the connection fields:
- Server Name/IP —
your-ftp-host(e.g.ftp.example.com) - Port —
21(default FTP port) - Username —
your-username - Password —
your-password
- Server Name/IP —
- Click Connect. On success, the remote directory listing appears in the Remote File System panel.
- To upload: click Browse, pick a local file, then click Upload.
- To download: type the exact name of a listed remote file into the download field and click Download.
Note: Host, port, and credentials are supplied at runtime through the UI — there are no hardcoded server details in this README. Replace the placeholders above with your own FTP server's values.
- Language: C#
- Framework: .NET Framework 4.8
- UI: WPF (XAML), themed with ModernWpf
- FTP: .NET
FtpWebRequest/WebClient(System.Net) - Tooling: Visual Studio, MSBuild, NuGet
- This project is a portfolio piece illustrating FTP upload, download, and directory listing in a WPF application.
- Classic FTP transmits credentials and data unencrypted. Use it only on trusted networks or with servers/accounts you control; prefer FTPS/SFTP for anything sensitive.
- The download feature matches against the names returned in the directory listing, so connect and list the remote directory before downloading.