دانلود فایل از اینترنت در سی شارپ
در این مقاله قصد داریم نحوه دانلود فایل های موجود در اینترنت و ذخیره آنها بر روی هارد سیستم کاربر رو بررسی کنیم .
برای دانلود فایل و ذخیره بر روی کامپیوتر یکی از راه های ساده استفاده از کتابخانه .Net می باشد ، پس اولین قدم افزودن کتابخانه زیر به پروژه می باشد :
1 |
using System.Net; |
برای دانلود از کلاس WebClient استفاده خواهیم کرد.
برای دانلود با استفاده از این کلاس دو روش وجود دارد :
1 – دانلود به صورت همزمان (Synchronously)
2 – دانلود به صورت غیر همزمان (Asynchronously)
دانلود به صورت همزمان (Synchronously) :
متد DownloadFile دو پارامتر از ورودی می گیرد که پارامتر اول آدرس فایل مورد نظر که بر روی اینترنت قرار دارد می باشد و پارامتر دوم ، مسیری می باشد که قصد ذخیره آن روی کامپیوتر خودتان را دارید می باشد . در واقع تا زمانی که دانلود به پایان نرسد قادر به انجام هیچ کاری نخواهید بود .
زمانی که با استفاده از این روش (همزمان) بخواهید دانلود را انجام دهید ، متد DownloadFile
thread اصلی پروژه را تا زمانی که دانلود تمام نشده و یا خطایی رخ ندهد بلاک می کند .
قطعه کد زیر دانلود به روش همزمان می باشد :
1 2 3 4 5 |
private void btnSync_Click(object sender, EventArgs e) { WebClient WebObj = new WebClient(); WebObj.DownloadFile("http://www.google.com/images/srpr/logo11w.png", @"c:\\glogo.png"); } |
دانلود به صورت غیر همزمان (Asynchronously) :
با این روش دانلود بدون بلاک کردن thread اصلی پروژه انجام می گیرد ، برای دانلود غیر همزمان باید از متد غیر همزمان DownloadFileAsync استفاده کنید .
1 2 3 4 5 |
private void btnAsync_Click(object sender, EventArgs e) { WebClient WebObj = new WebClient(); WebObj.DownloadFileAsync(new Uri("http://www.google.com/images/srpr/logo11w.png"), @"c:\\download\\gLogo.png"); } |
Uri مخفف Universal Resource Identifier می باشد .
با استفاده از uri می توانید اطلاعات در مورد آدرس داده شده بدست آورید ، به طور مثال می توانید آدرس سایت داده شده و … را بدست آورید .
میتوانید روند پیشرفت دانلود فایل توسط Progress Bar به کاربر نمایش دهید همچنین می توانید با اتمام کامل دانلود پیغامی به کاربر نمایش دهید که به صورت زیر خواهد بود :
1 2 3 4 5 6 7 |
private void btnAsync_Click(object sender, EventArgs e) { WebClient WebObj = new WebClient(); WebObj.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); WebObj.DownloadProgressChanged += new DownloadProgressChangedEventHandler(Progress); WebObj.DownloadFileAsync(new Uri("http://www.google.com/images/srpr/logo11w.png"), @"c:\\download\\gLogo.png"); } |
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.