Click here to Skip to main content
13,446,005 members (43,296 online)
Click here to Skip to main content
Add your own
alternative version


215 bookmarked
Posted 27 Mar 2003

FTP client library for C#

, 27 Mar 2003
Rate this:
Please Sign up or sign in to vote.
FTP client library for C#, including asynchronous operations.


Finding a fully working, lightweight FTP client, that had no GUI, was free, and came with source code, was difficult. This API is based on a work, Jaimon Mathew had done, and I have added some methods, cleaned up the code, debugged it and added some error handling, logging, debugging etc.

It is easy to use. Here is a code example:

FtpClient ftp = new FtpClient(FtpServer,FtpUserName,FtpPassword);

Not so difficult now, is it? I am using it in my WebCamService list on this site, so if you want to see it in action, go here.

I started out wrapping fully the WinInet API, but it was such a labourous task that it made sense just to do the FTP. Since Microsoft has great support for HTTP, I could skip that, and later work on SMTP.


  • Upload
  • Recursive upload
  • Download
  • Resume
  • Delete
  • Rename
  • Create directory
  • Asynchronous operation


  • Not fully tested
  • No real error handling
  • No download recourse yet
  • Rename will overwrite, if the target already exists

Asynchronous operation

A little more advanced, the asynchronous operation is used when you need the job, to fork while your code continues over the method. All asynchronous methods start with Begin.

Using it is simple. You need a couple of things, an AsyncCallback object and a method which it handles.

private FtpClient ftp = null;

private void UploadPicture(string imagePath)
    string FtpServer = ConfigurationSettings.AppSettings["FtpServer"];
    string FtpUserName = ConfigurationSettings.AppSettings["FtpUserName"];
    string FtpPassword = ConfigurationSettings.AppSettings["FtpPassword"];

    AsyncCallback callback = new AsyncCallback(CloseConnection);

    ftp = new FtpClient(FtpServer,FtpUserName,FtpPassword);
    ftp.BeginUpload(imagePath, callback);

private void CloseConnection(IAsyncResult result)

    if ( ftp != null ) ftp.Close();
        ftp = null;

When the upload finishes or throws an exception, the CloseConnection method will be called.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Dan Glass
Australia Australia

You may also be interested in...


Comments and Discussions

GeneralRe: how to run with chinese file and folder name Pin
fhy1977022729-Jul-09 20:29
memberfhy1977022729-Jul-09 20:29 
QuestionHow can I use "BeginGetFileList"? Pin
wolfs21-Sep-06 4:56
memberwolfs21-Sep-06 4:56 
AnswerRe: How can I use "BeginGetFileList"? Pin
wolfs25-Sep-06 16:16
memberwolfs25-Sep-06 16:16 
GeneralRe: How can I use "BeginGetFileList"? Pin
endy28-May-07 21:37
memberendy28-May-07 21:37 
Questionupload images in bad resolution!!! Pin
hamid_m20-Sep-06 13:05
memberhamid_m20-Sep-06 13:05 
QuestionHow to Download file from Ftp server Pin
cscrazy3-Aug-06 17:30
membercscrazy3-Aug-06 17:30 
AnswerRe: How to Download file from Ftp server Pin
emprormohit20-Jul-17 22:59
memberemprormohit20-Jul-17 22:59 
GeneralView a list of files Pin
fetty41010-Jan-06 1:44
memberfetty41010-Jan-06 1:44 
I need to get all the files in a remote folder. How do I do that?

GeneralRe: View a list of files Pin
bianyb19-Jul-07 20:51
memberbianyb19-Jul-07 20:51 
GeneralDon't loose your time... Pin
tiusho30-Nov-05 22:27
membertiusho30-Nov-05 22:27 
GeneralRe: Don't loose your time... Pin
Jeff Firestone2-Dec-05 7:18
memberJeff Firestone2-Dec-05 7:18 
GeneralRe: Don't loose your time... Pin
thirteenthmonth4-Jan-07 17:26
memberthirteenthmonth4-Jan-07 17:26 
GeneralRe: Don't loose your time... Pin
Niklas Henricson7-May-09 0:24
memberNiklas Henricson7-May-09 0:24 
GeneralRe: Don't loose your time... Pin
nietzsche4413-Sep-07 22:19
membernietzsche4413-Sep-07 22:19 
GeneralRe: Don't loose your time... Pin
jay_t5516-Jan-10 19:43
memberjay_t5516-Jan-10 19:43 
Generalerror,while ftp.GetFileList(); Pin
lovemory23-Aug-05 17:50
memberlovemory23-Aug-05 17:50 
AnswerRe: error,while ftp.GetFileList(); Pin
Sprotty11-Oct-05 0:13
memberSprotty11-Oct-05 0:13 
GeneralRe: error,while ftp.GetFileList(); Pin
Patrice Dargenton27-Jun-06 0:40
memberPatrice Dargenton27-Jun-06 0:40 
GeneralRe: error,while ftp.GetFileList(); Pin
tmck7-Mar-07 5:25
membertmck7-Mar-07 5:25 
GeneralRe: error,while ftp.GetFileList(); Pin
ti_hugo31-May-07 1:31
memberti_hugo31-May-07 1:31 
GeneralRe: error,while ftp.GetFileList(); Pin
Patrick Mortara20-Nov-07 6:25
memberPatrick Mortara20-Nov-07 6:25 
GeneralProxy Support for FTP client Pin
drkalucard3-May-05 23:40
memberdrkalucard3-May-05 23:40 
GeneralAnother free, open-source .NET FTP component Pin
Hans Andersen11-Nov-04 11:45
sussHans Andersen11-Nov-04 11:45 
QuestionHave any body here actualy looked at the code? Pin
Arnt1-Nov-04 12:31
memberArnt1-Nov-04 12:31 
GeneralNot working Pin
agolovan29-Sep-04 14:50
memberagolovan29-Sep-04 14:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04-2016 | 2.8.180314.2 | Last Updated 28 Mar 2003
Article Copyright 2003 by Dan Glass
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid