从URL路径下载文件的简单方法是什么?
using (var client = new WebClient()) { client.DownloadFile("http://example.com/file/song/a.mpeg", "a.mpeg"); }
包括此命名空间
using System.Net;
异步下载并放入ProgressBar以在UI线程本身中显示下载的状态
private void BtnDownload_Click(object sender, RoutedEventArgs e) { using (WebClient wc = new WebClient()) { wc.DownloadProgressChanged += wc_DownloadProgressChanged; wc.DownloadFileAsync ( // Param1 = Link of file new System.Uri("http://www.sayka.com/downloads/front_view.jpg"), // Param2 = Path to save "D:\\Images\\front_view.jpg" ); } } // Event to track the progress void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { progressBar.Value = e.ProgressPercentage; }
用途System.Net.WebClient.DownloadFile
:
string remoteUri = "http://www.contoso.com/library/homepage/images/"; string fileName = "ms-banner.gif", myStringWebResource = null; // Create a new WebClient instance. using (WebClient myWebClient = new WebClient()) { string myStringWebResource = remoteUri + fileName; // Download the Web resource and save it into the current filesystem folder. myWebClient.DownloadFile(myStringWebResource, fileName); }
using System.Net; WebClient webClient = new WebClient(); webClient.DownloadFile("http://mysite.com/myfile.txt", @"c:\myfile.txt");
在将状态打印到控制台时完成下载文件的类.
using System; using System.ComponentModel; using System.IO; using System.Net; using System.Threading; class FileDownloader { private readonly string _url; private readonly string _fullPathWhereToSave; private bool _result = false; private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0); public FileDownloader(string url, string fullPathWhereToSave) { if (string.IsNullOrEmpty(url)) throw new ArgumentNullException("url"); if (string.IsNullOrEmpty(fullPathWhereToSave)) throw new ArgumentNullException("fullPathWhereToSave"); this._url = url; this._fullPathWhereToSave = fullPathWhereToSave; } public bool StartDownload(int timeout) { try { System.IO.Directory.CreateDirectory(Path.GetDirectoryName(_fullPathWhereToSave)); if (File.Exists(_fullPathWhereToSave)) { File.Delete(_fullPathWhereToSave); } using (WebClient client = new WebClient()) { var ur = new Uri(_url); // client.Credentials = new NetworkCredential("username", "password"); client.DownloadProgressChanged += WebClientDownloadProgressChanged; client.DownloadFileCompleted += WebClientDownloadCompleted; Console.WriteLine(@"Downloading file:"); client.DownloadFileAsync(ur, _fullPathWhereToSave); _semaphore.Wait(timeout); return _result && File.Exists(_fullPathWhereToSave); } } catch (Exception e) { Console.WriteLine("Was not able to download file!"); Console.Write(e); return false; } finally { this._semaphore.Dispose(); } } private void WebClientDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { Console.Write("\r --> {0}%.", e.ProgressPercentage); } private void WebClientDownloadCompleted(object sender, AsyncCompletedEventArgs args) { _result = !args.Cancelled; if (!_result) { Console.Write(args.Error.ToString()); } Console.WriteLine(Environment.NewLine + "Download finished!"); _semaphore.Release(); } public static bool DownloadFile(string url, string fullPathWhereToSave, int timeoutInMilliSec) { return new FileDownloader(url, fullPathWhereToSave).StartDownload(timeoutInMilliSec); } }
用法:
static void Main(string[] args) { var success = FileDownloader.DownloadFile(fileUrl, fullPathWhereToSave, timeoutInMilliSec); Console.WriteLine("Done - success: " + success); Console.ReadLine(); }
您也可以在WebClient类中使用DownloadFileAsync方法.它将具有指定URI的资源下载到本地文件.此方法也不会阻止调用线程.
样品:
webClient.DownloadFileAsync(new Uri("http://www.example.com/file/test.jpg"), "test.jpg");
欲获得更多信息:
http://csharpexamples.com/download-files-synchronous-asynchronous-url-c/
试试这个:
private void downloadFile(string url) { string file = System.IO.Path.GetFileName(url); WebClient cln = new WebClient(); cln.DownloadFile(url, file); }
检查网络连接,GetIsNetworkAvailable()
以避免在未连接到网络时创建空文件.
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) { using (System.Net.WebClient client = new System.Net.WebClient()) { client.DownloadFileAsync(new Uri("http://www.examplesite.com/test.txt"), "D:\\test.txt"); } }