Home / Programming / Blog article: Code Sample: Programmatically Download File Using C#

| RSS

Code Sample: Programmatically Download File Using C#

September 17th, 2008 | 16 Comments | Posted in Programming

While browsing forums today I came across a question which asked for a solution to download a file from a web server programmatically. The solution is very simple and below is the code which achieves the goal. Here I am downloading a file asynchronously on Button Click.


   1: private void buttonDownloadFile_Click(object sender, EventArgs e)
   2: {
   3:     string url
   4:         = @"http://www.thereforesystems.com/wp-content/uploads/2008/08/image35.png";
   5:
   6:     // Create an instance of WebClient
   7:     WebClient client = new WebClient();
   8:
   9:     // Hookup DownloadFileCompleted Event
  10:     client.DownloadFileCompleted +=
  11:         new AsyncCompletedEventHandler(client_DownloadFileCompleted);
  12:
  13:     // Start the download and copy the file to c:\temp
  14:     client.DownloadFileAsync(new Uri(url), @"c:\temp\image35.png");
  15: }
  16:
  17: void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
  18: {
  19:     MessageBox.Show("File downloaded");
  20: }

You can also download the file synchronously using WebClient.DownloadFile() method.

Leave a Reply 27132 views, 11 so far today |
Tags: ,
Follow Discussion

16 Responses to “Code Sample: Programmatically Download File Using C#”

  1. S.P.I.D.E.R.M.A.N Says:

    Hello! Thank you for the post.

    I am anxious to know if this will work on computer behind PROXY?

  2. Deepak Says:

    Thanks. If it does not work then you can set WebClient.UseDefaultCredentials. This should do the trick. And if you have to specify credentials for your proxy explicitly then you can set WebClient.Credentials property.

    Hope this helps.

  3. S.P.I.D.E.R.M.A.N Says:

    Thank dude for a quick reply!
    I’ll try this.
    Good Day!

  4. Bikash Says:

    Hello! Thank you for the post.

  5. Deepak Says:

    Bikash,

    Thank you for your comment.

  6. HIMANSHU Says:

    Hi,
    I need to know if this Code works Successfully for Downloading a file with .pdf extension on my local system drive I’hv tried a similar but failed to do so

    I need to download a file opened in a browser with .pdf extension

    Plz Help
    Help Would Be Appreciated
    Himanshu

  7. Deepak Says:

    Hi Himanshu,

    It should work fine with any file extension.

  8. HIMANSHU Says:

    HI,
    thx for the quick reply
    i’ll just check and report back
    thx again.

  9. nikeeta Says:

    hi all.. very use full article but.. can we use it in web aplication.. on internet.. where ever i get example of WebClient , i get it in window application, in web application, is it possible to add event handler “DownloadDataCompletedEventHandler” to track download complete ? any help on this will be appreciated.. thank u..

  10. ArabicGeek Says:

    aha … thanks for help

  11. Narayana Karthik Says:

    The code is really helpful, but i Need one clarification

    I want to download a file from the web and the url is the indirect url (there is no filename in the url it has query param), so code does not know about the file name, how can i get the file name
    I ran through few stuffs for indirect url using webclient downloadfile method.
    I have get filename in content-dispostion or content-location of the response headers.
    But some times the response header does not have content-type or content-disposition (to get file name) in it, in this situation what can i do here to get the real file name?

    Any help will be appreciated from this end.

  12. Shweta Says:

    Thanx dude

  13. Rajib Says:

    Thanks for the code.

    I am trying to write a program that will be scheduled to run everyday to download a file from an ftp site. The file is created automatically everyday and saved to the ftp site by another program. The file is named abc_datetimestamp.txt. Since the file name contains the create timestamp, the file name changes everyday. Therefore I do not know what the exact file name will be. Is there any way I can use the WebClient.DownloadFile method without knowing the complete file name? Or is there a way I could retrieve the file name from the ftp site and then feed it to the webclient method? Please note that the file is deleted after it is downloaded from the ftp site, so at any one time, there will be only one file that starts with abc.

    Any help will be appreciated.

  14. Deepak Says:

    Rajib,

    Your best bet will be to transfer the file via ftp. You can download all files in a folder this way. There are many ftp libraries available for .NET both commercial and open source.

  15. Raja Says:

    If network goes down while downloading file, then downloading will break. If I am downloading a big file, then is there any way so that file downloading can continue from same point???

  16. Deepak Says:

    Raja,

    If downloading the file programmatically is not a strict requirement then you can use a tool such as http://www.freedownloadmanager.org/

    The tool is superb and incorporates features such as resume support, scheduler and much more.

Leave a Reply





Switch to our mobile site