کدنویس۲۱

کدنویس۲۱

با کد نویس 21 کد نویس باشید.
کدنویس۲۱

کدنویس۲۱

با کد نویس 21 کد نویس باشید.

دانلود کردن فایل ها با C#

سلام دوستان امروز می خواهم آموزش ساخت یک Downloader با سی شارپ برایتان بگذارم.

 

 

ابتدا پس از ایجاد یک پروژه Windows Forms Application صفحه ای مانند عکس زیر طراحی کنید(نام ها را مانند آنچه در عکس آمده مشخص کنید.).


form

حداقل pB1 را 0 و حداکثر آن را 100 قرار دهید.

کتابخانه زیر را اضافه کنید.

1
using System.Net;

حال پس از افزودن کتابخانه توابع زیر را در کلاس Form1 بنویسید.

تابع آغاز دانلود با دریافت موقعیت و لینک فایل:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void DownloadFile(string urlAddress, string location)
      {
       WebClient webClient = new WebClient();
       webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
       webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
       Uri URL = urlAddress.StartsWith("http", StringComparison.OrdinalIgnoreCase) ? new Uri(urlAddress) : new Uri("http://" + urlAddress);
       try
            {
                webClient.DownloadFileAsync(URL, location);
            }
       catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

خط 3 یک شی از نوع WebClient درست می کند.

خط 4 و 5 به ترتیب تابع Complited و PogressChanged را برای اتمام دانلود و تغییر مقدار دانلود شده مشخص می کند.

خط 6 مقدار موجود در urlAddress که به عنوان ورودی تابع گرفته شده را چک می کند و اگر با http شروع شده بود آن را در متغیر URL که از نوع Uri است قرار می دهد و در غیر این صورت ابتدا به اول آن http:// را اضافه کرده و بعد در متغیر می ریزد.

خط 7 تا 14 امتحان می کند که می تواند فایل را در مسیر دریافت شده دانلود کند یا خیر و در صورت امکان آن را دانلود می کند و اگر نشد پیغام خطا می دهد.

تابع پیغام پایان دانلود:

1
2
3
4
public void Completed(object sender, AsyncCompletedEventArgs e)
        {
            MessageBox.Show("Download File Completed");
        }

این تابع که هنگام پایان دانلود اجرا می شود کارش این است که پیام Download File Completed را نمایش دهد.

تابع نمایش وضعیت مقدار دانلود:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            pB1.Value = e.ProgressPercentage;
            label2.Text = e.ProgressPercentage.ToString() + "%";
            label4.Text = e.TotalBytesToReceive.ToString() + "bytes";
            if (e.BytesReceived < 1024)
                label3.Text = e.BytesReceived.ToString() + "bytes";
            else if (e.BytesReceived / 1024.0 < 1024)
                label3.Text = (e.BytesReceived / 1024.0).ToString() + "kb";
            else if ((e.BytesReceived / 1024.0) / 1024.0 < 1024)
                label3.Text = ((e.BytesReceived / 1024.0) / 1024.0).ToString() + "Mb";
            else
                label3.Text = (((e.BytesReceived / 1024.0) / 1024.0) / 1024.0).ToString() + "Gb";
        }

این تابع در زمان تغییر مقدار دانلود شده اجرا می شود.

خط 3 درصد دانلود را در pB1 می ریزد. خط 4 درصد دانلود در label2 نمایش می دهد. خط 5 تعداد بایت های فایل را در label4 می نویسد. خط 6 تا 13 چک می کند که اگر مقدار دانلود شده به یک گیگابایت رسیده بود به صورت گیگابایتی حجم دانلود شده را نمایش می دهد و در غیر این صورت اگر به یک مگابایت رسیده بود با مگابایت و... .


حالا با دابل کلیک وارد رویداد کلیک btn1 شوید و کد زیر را در آن بنویسید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            if (txtURL.Text.Length > 0)
            {
                if (txtURL.Text.IndexOf('.') > 0)
                {
                    if (txtURL.Text.LastIndexOf('/') >= 0)
                        saveFD.FileName = txtURL.Text.Substring(txtURL.Text.LastIndexOf('/')+1);
                    else
                        saveFD.FileName = txtURL.Text;
                    saveFD.ShowDialog();
                }
                else
                {
                    MessageBox.Show("URL is wrong.");
                }
            }else
            {
                MessageBox.Show("Please enter a URL in the box.");
            }

خط 1و2 و 15تا18 چک می کند که اگر تعداد حروف موجود در txtURL بیشتر از 0 بود بقیه کار ها را ادامه می دهد و در غیر این صورت می گوید لطفاً یک لینک در جعبه وارد کنید.

خط 3و4 و 11تا14 چک می کند که آیا در متن وارد شده "." وجود دارد یا خیر(نقطه وارد شده در اوّل متن حساب نمی شود.) اگر داشت به کار ادامه می دهد در غیر این صورت میگوید آدرس وارد شده نادرست است.

خط 5 تا 8 ابتدا چک می کند که / در URL وارد شده موجود باشد اگر بود saveFD.FileName را برابر نوشته بعد از آخرین / می کند و در صورت موجود نبودن / saveFD.FileName برابر کل متن وارد شده می شود.

خط 9 دیالوگ saveFD را نمایش می دهد.


اکنون وارد رویداد FileOK در saveFD شوید و کد زیر که تابع اوّل را فرا می خواند را در آن بنویسید.

1
DownloadFile(txtURL.Text, saveFD.FileName);

 نکته جالب: اگر آدرس یک وب سایت یا وبلاگ را وارد کنید کد html آن صفحه در حالتی که آن لحظه هست را دانلود می کند.

امیدوارم این پست براتون مفید واقع شه.

تا دیگر کد ها خداحافظ


نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد