(C#) Web Client Olusturma ve Yönetme

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

Yorum Yapabilirsiniz

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

w

Connecting to %s