آموزش دانلود فایل از روی server به کمک file reference

yaa110

کاربر فعال
با عرض تبریک به مناسبت فرا رسیدن ایام ماه مبارک رمضان؛

در این درس نحوه دانلود فایل از روی Server و ذخیره سازی آن آموزش داده می‌شود. در صورتی که قرار باشد پروژه روی Desktop کار کند باید از پروژه Air استفاده شود، در غیر اینصورت می‌توانید از پروژه Action Script 3.0 استفاده کنید. در هر دو حالت عملیات دانلود توسط FileReference و بدون نیاز به هیچ واسطه PHP انجام می‌شود.

1- با توجه به نیاز خود یک پروژه Air و یا AS3 بسازید.

۲- ابتدا لازم است که فرم زیر را طراحی کنید.

Untitled-13.jpg


۳- برای ادامه کلاسه‌های مورد نیاز را import کنید.

کد:
import flash.events.Event;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.events.ProgressEvent;

4- حالا به دو متغیر از نوع FileReference و URLRequest نیاز داریم. به کمک متغیر URLRequest آدرس فایل مورد نظر را برای دانلود به متغیر FileReference معرفی خواهیم کرد.

کد:
var downloader:FileReference;
var Request:URLRequest;

5- قصد داریم در این مثال بعد از کلیک روی download_mc عملیات دانلود شروع شود. پس Event Listener مربوطه را به صورت زیر تعریف می‌کنیم، همچنین این MovieClip در حالت Button قرار گرفته است (البته این کار ضروری نیست).

کد:
download_mc.buttonMode = true;
download_mc.addEventListener("click", Start);

6- حالا تابع Start را که بعد از کلیک روی download_mc فراخوانی می‌شود، تعریف می‌کنیم.

کد:
function Start(e:Event):void {
    download_mc.removeEventListener("click", Start);
    mc_loaded.scaleX = 0;
    downloader = new FileReference();
    Request = new URLRequest();
    downloader.addEventListener(ProgressEvent.PROGRESS, Progress);
    downloader.addEventListener(Event.COMPLETE, Complete);
    downloader.addEventListener(Event.CANCEL, Cancel);
    Request.url = url_txt.text;
    downloader.download(Request);
    url_txt.text = "Downloading ...";
}

در این تابع:
  • ابتدا Event Listener مربوط به کلیک حذف می‌شود تا کاربر قبل از تکمیل دانلود نتواند دوباره این تابع را فراخوانی کند.
  • mc_loaded در حالت آماده برای نشان دادن مقدار پیشرفت دانلود قرار می‌گیرد.
  • یک شیء جدید برای FileReference و URLRequest ساخته می‌شود.
  • سه Event Listener برای FileReference به منظور نشان دادن تکمیل و حین و لغو دانلود تعریف می‌شود.
  • آدرسی که کاربر در فیلد متنی url_txt نوشته است به URLRequest منتقل می‌شود.
  • آدرس فایل توسط URLRequest به FileReference معرفی می‌شود و کاربر پنجره ذخیره فایل را خواهد دید.

۷- حالا باید توابع مربوط به سه وضعیت لغو، حین و تکمیل دانلود که در زمان‌های مختلف توسط FileReference فراخوانی می‌شوند را تعریف کنیم.

کد:
function Cancel(e:Event):void {
    url_txt.text = "";
    download_mc.addEventListener("click", Start);
    downloader.removeEventListener(Event.CANCEL, Cancel);
    downloader.removeEventListener(ProgressEvent.PROGRESS, Progress);
    downloader.removeEventListener(Event.COMPLETE, Complete);
}
 
function Progress(e:ProgressEvent):void {
    mc_loaded.scaleX = (e.bytesLoaded / e.bytesTotal) ;
}
 
function Complete(e:Event):void {
    url_txt.text = "Download Finished.";
    download_mc.addEventListener("click", Start);
    downloader.removeEventListener(Event.CANCEL, Cancel);
    downloader.removeEventListener(ProgressEvent.PROGRESS, Progress);
    downloader.removeEventListener(Event.COMPLETE, Complete);
}

همانطور که مشخص است بعد از لغو و یا تکمیل دانلود دوباره وضعیت کلیک برای download_mc فعال می‌شود و Event Listener‌های مربوط به FileReference حذف می‌شوند. در حین دانلود هم mc_loaded درصد پیشرفت دانلود را نشان می‌دهد.

دانلود سورس: http://flashcenter.ir/fa/?p=47
 
آخرین ویرایش:

kodex2

کاربر فعال
دوست عزیز و گرامی،

خواهش می کنم توی موضوع مطالبتون یه کلمه آموزش هم اضافه کنید که با سوالات اشتباه نشه. چون اکثرا برای سوال پرسیدن پست میدن.

ممنون میشم.
موفق باشید.
 

جدیدترین ارسال ها

بالا