<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yılmaz Yavuz &#187; webclient</title>
	<atom:link href="http://www.yilmazyavuz.com/yyblog/index.php/tag/webclient/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yilmazyavuz.com/yyblog</link>
	<description>yazılım üzerine taze taze</description>
	<lastBuildDate>Mon, 14 Feb 2011 15:35:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WebClient kullanarak Asenkron dosya indirmek</title>
		<link>http://www.yilmazyavuz.com/yyblog/index.php/2009/02/webclient-kullanarak-asenkron-dosya-indirmek/</link>
		<comments>http://www.yilmazyavuz.com/yyblog/index.php/2009/02/webclient-kullanarak-asenkron-dosya-indirmek/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 21:51:34 +0000</pubDate>
		<dc:creator>Yılmaz Yavuz</dc:creator>
				<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Devexpress]]></category>
		<category><![CDATA[örnek]]></category>
		<category><![CDATA[webclient]]></category>

		<guid isPermaLink="false">http://www.yilmazyavuz.com/yyblog/?p=124</guid>
		<description><![CDATA[<p>Uygulamamızda internet üzerinden dosya indirme ihtiyacı duyduğumuzda kullanabileceğimiz sınıflardan bir taneside System.Net.WebClient sınıfıdır. Bu yazıda bu sınıfı kullanarak bir web sitesinden dosya indirmeyi anlatmaya çalışacağım.</p>
<p>Uygulamayı bir windows forms uygulaması olarak geliştireceğiz.
Bunun için Visual Studio üzerinde yeni bir proje oluşturdum ve karşıma gelen Form1.cs üzerinde işlemleri yapıyorum.</p>
<p>Dizayn için gerekenler :
1 Windows form (Form1.cs)
1 TextBox (textBox1)
1 Button (button1)
1 <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.yilmazyavuz.com/yyblog/index.php/2009/02/webclient-kullanarak-asenkron-dosya-indirmek/">WebClient kullanarak Asenkron dosya indirmek</a></span>]]></description>
			<content:encoded><![CDATA[<p>Uygulamamızda internet üzerinden dosya indirme ihtiyacı duyduğumuzda kullanabileceğimiz sınıflardan bir taneside System.Net.WebClient sınıfıdır. Bu yazıda bu sınıfı kullanarak bir web sitesinden dosya indirmeyi anlatmaya çalışacağım.</p>
<p>Uygulamayı bir windows forms uygulaması olarak geliştireceğiz.<br />
Bunun için Visual Studio üzerinde yeni bir proje oluşturdum ve karşıma gelen Form1.cs üzerinde işlemleri yapıyorum.</p>
<p>Dizayn için gerekenler :<br />
1 Windows form (Form1.cs)<br />
1 TextBox (textBox1)<br />
1 Button (button1)<br />
1 ProgressBar (progressBar1)<br />
son olarakta bir Label (label1)</p>
<p><a href="http://www.yilmazyavuz.com/yyblog/wp-content/form_gorunumu.jpg"><img class="alignnone size-medium wp-image-125" title="form_gorunumu" src="http://www.yilmazyavuz.com/yyblog/wp-content/form_gorunumu-300x157.jpg" alt="" /></a></p>
<p>TextBox içine yazılan web adresindeki içeriği indirip açan, indirirkende durumu progressbarda gösteren ve label içerisinde kaç kb inmiş kaç kb kalmış gösteren bir program yazmayı hedefliyoruz.</p>
<p>Hiç vakit kaybetmeden button1_click olayını yakalayıp kodlarımızı yazmaya başlıyoruz:</p>
<pre class="brush: csharp;">        string myLocalFilePath;
private void button1_Click(object sender, EventArgs e)
{

#region DosyaIsmi
string[] pathArray = textBox1.Text.Split('/');
if(pathArray.Length == 0)
{
MessageBox.Show(&quot;Lütfen Düzgün bir web adresi giriniz&quot;);
return;
}
string fileName = pathArray[pathArray.Length - 1];

myLocalFilePath = Application.StartupPath + fileName;

#endregion
WebClient myClient = new WebClient();
myClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(myClient_DownloadProgressChanged);
myClient.DownloadFileCompleted += new AsyncCompletedEventHandler(myClient_DownloadFileCompleted);
Uri myWebAddress = new Uri(textBox1.Text);
myClient.DownloadFileAsync(myWebAddress,myLocalFilePath);
}
</pre>
<p>Burda yaptıklarımızı kısaca açıklamak gerekirse öncelikle methodun dışında, indirilecek olan dosyanın yolunu tutmak için bir field oluşturuyoruz, bu bize daha sonra lazım olacak.<br />
Öncelikle, dosyanın bizim harddisk&#8217;imizdeki ismini kullanıcıya sormadığımız için, verilen web adresi üzerinden / ile  başlayan son string ifadeyi alıyoruz. Bu arada ufak bir kontrol ile bunun bir web adresi olup olmadığını da, anlıyor ve gerekirse kullanıcıya uyarı veriyoruz.</p>
<p>Daha sonra WebClient class&#8217;ından bir örnek oluşturup DownloadProgressChanged ve DownloadFileCompleted event larını yakalıyoruz.<br />
Kullanıcının bize textBox1 ile gönderdiği değeri Uri classından bir örnek oluşturup varsayılan yapıcı(default contructor) methodu na gönderiyoruz.</p>
<p>Ve son olarak da oluşturduğumuz WebClient örneğimizin DownloadFileAsync methodunun (Uri fileAddress,string localFilePath) parametrelerini alan overload&#8217;unu elimizde bulunan myWebAddress ve myLocalFilePath değişkenlerimizi göndererek işletiyoruz.</p>
<p>Asenkron dosya böylece webClient ımız tarafından indirilmeye başlanıyor. Durum değişim (ProgressChanged) ve Dosya tamamlanma (FileCompleted) olaylarının tetikleyeceği methodlarıda aşağıdaki şekilde yazarak programımızı çalışmaya hazır hale getiriyoruz.</p>
<pre class="brush: csharp;">        void myClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
DialogResult dr = MessageBox.Show(&quot;Dosya indirme başarıyla gerçekleşti, Dosyayı açmak istermisiniz ?&quot;,&quot;Dosya indirildi&quot;,MessageBoxButtons.YesNo,MessageBoxIcon.Information);
if(dr == System.Windows.Forms.DialogResult.Yes)
{
System.Diagnostics.Process.Start(myLocalFilePath);
}
}

void myClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
label1.Text = String.Format(&quot;{0} / {1} Kb&quot;, (e.BytesReceived/1024), (e.TotalBytesToReceive/1024));

}
</pre>
<p><a href="http://www.yilmazyavuz.com/yyblog/wp-content/webclient_downloadfile_ornek.zip">Yazıda bulunan örnek kod (Zip)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yilmazyavuz.com/yyblog/index.php/2009/02/webclient-kullanarak-asenkron-dosya-indirmek/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

