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

شروع موضوع توسط yaa110 ‏31 جولای 2011 در انجمن برنامه فلش Flash

کلمات کلیدی:
  1. yaa110

    yaa110 کاربر فعال

    ارسال‌ها:
    206
    تشکر شده:
    503
    امتیاز دستاورد:
    16
    با عرض تبریک به مناسبت فرا رسیدن ایام ماه مبارک رمضان؛

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

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

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

    [​IMG]

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

    کد (Text):
    import flash.events.Event;
    import flash.net.FileReference;
    import flash.net.URLRequest;
    import flash.events.ProgressEvent;
    4- حالا به دو متغیر از نوع FileReference و URLRequest نیاز داریم. به کمک متغیر URLRequest آدرس فایل مورد نظر را برای دانلود به متغیر FileReference معرفی خواهیم کرد.

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

    کد (Text):
    download_mc.buttonMode = true;
    download_mc.addEventListener("click", Start);
    6- حالا تابع Start را که بعد از کلیک روی download_mc فراخوانی می‌شود، تعریف می‌کنیم.

    کد (Text):
    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 فراخوانی می‌شوند را تعریف کنیم.

    کد (Text):
    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
     
    آخرین ویرایش: ‏20 جولای 2013
    نوشته شده توسط yaa110 در ‏31 جولای 2011
    Avang2005، meysamk، mohammad.sub7 و 5 نفر دیگر از این ارسال تشکر کرده اند.
  2. kodex2

    kodex2 کاربر فعال

    ارسال‌ها:
    157
    تشکر شده:
    143
    امتیاز دستاورد:
    16
    دوست عزیز و گرامی،

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

    ممنون میشم.
    موفق باشید.
     
    نوشته شده توسط kodex2 در ‏31 جولای 2011
    yaa110 از این پست تشکر کرده است.
  3. supericen

    supericen New Member

    ارسال‌ها:
    8
    تشکر شده:
    2
    امتیاز دستاورد:
    1
    ممکنه تصویری تر آموزش بدید؟
    خیلی سخت شد
     
    نوشته شده توسط supericen در ‏31 جولای 2011
    yaa110 از این پست تشکر کرده است.

به اشتراک بگذارید