Merhaba arkadaşlar,

Web client olusturarak bir cloud üzerinden dosyanın seçilen dosya dizinine nasıl indirilebileceğini görelim.

Bunun için gerekli olan bileşenler

  • 1  Textbox
  • 2 Button
  • 1 Progressbar
  • 1 FolderBrowserDialog

ve referanslar ise şu şekilde,

  • System.Net

Web clienti calıstırmadan önce kullanıcının dosyayı nereye indireceğini ayarlatmamız için dosya yolu sec tusunun click olayına sunları yazıyoruz


folderBrowserDialog1.ShowNewFolderButton = true; // Yeni klasör olustur tusunun aktif olması icin gereklidir.

DialogResult result = folderBrowserDialog1.ShowDialog();
 if (result == DialogResult.OK) // Eger dosya secilimi dogru yapıldı ise.
 {
 YerTXT.Text = folderBrowserDialog1.SelectedPath; // Dosya yolunun gösterileceği textboxa yazdırıyoruz.Programımız için bir önemi yoktur ama kullanıcıya teyit ettirmek amaçlıdır.
 yer = folderBrowserDialog1.SelectedPath;// Programın en yukarısında böyle bir degisken tanımlamıstık.Bu degisken icerisine atılan yolu kullanacağız.
 if(yer.Length>1)
 {
 indirTusu.Enabled = true;
 }
 }

İndir tusunun click olayına sunları yazıyoruz.


try
 {
 indirTusu.Text = "İndiriliyor";
 WebClient webClient = new WebClient();
 webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
 webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
 }
 catch
 {

 }

Simdi ise 2 tane metod tanımlayarak progress bar degerinin indirme islemine göre ilerlemesini sağlayacağız.Normalde bu islem progressbar’a rastgele bir deger atanarak yine rastgele artması üzerine yapılır.Ancak bu kullanıcının dosya indirme islemi bitmeden müdahale etmesi ve kod bloklarının işleyişine zarar vermesine neden olur.

Tanımlanacak metodlar şu şekilde,


private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
 {
 ProgressBar1.Value = e.ProgressPercentage;
 }

private void Completed(object sender, AsyncCompletedEventArgs e)
 {

 indirTusu.Text = "İndirildi";
 indirTusu.Enabled = true;
 System.Diagnostics.Process.Start(yer);

 }

İslemler bittikten sonra artık uygulamamız dosyayı indirebilir.

Tabiki bu isin uzatılmış halidir.Eş zamanlı indirme halinde bu kod blogları azalacaktır.

Progress bar’ın olmadıgı ve tek tusla indirme islemini sizin belirlediğiniz dizine yapmasını isterseniz şu şekilde yapabiliriz.

Button click olayına

WebClient webClient = new webClient();
webClient.DownloadFile("http://mysite.com/myfile.txt"@"c:\myfile.txt");

 

Reklamlar