Как программно скачать файл на C#?
суббота, 9 января 2010,
Александр Краковецкий
Для этой задачи подходит WebClient:
WebClient webClient = new WebClient(); webClient.DownloadFile("путь к файлу", @"путь к локальному файлу");
Если файлы большие, то есть смысл скачивать их асинхронно:
using System; using System.Text; using System.Net; using System.ComponentModel; namespace WebClientDemo { class Program { static void Main(string[] args) { try { WebClient webClient = new WebClient(); webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(webClient_DownloadFileCompleted); webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged); webClient.DownloadFileAsync(new Uri("путь к файлу"), @"путь к локальному файлу"); Console.ReadKey(); } catch(Exception ex) { Console.WriteLine("Could not download file: " + ex.Message); } } static void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { Console.WriteLine(String.Format("{0} of {1} bytes downloaded ({2}% done)", e.BytesReceived, e.TotalBytesToReceive, e.ProgressPercentage)); } static void webClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { if(e.Error == null) Console.WriteLine("All done downloading the file!"); else Console.WriteLine("Could not download file: " + e.Error.Message); } } }