خانه » ادوبی ایر » دانلود فایل از روی Server به کمک File Reference

دانلود فایل از روی Server به کمک File Reference

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

دانلود سورس: sourceCS5.zip

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

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

۳- برای ادامه کلاسه‌های مورد نیاز را 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 درصد پیشرفت دانلود را نشان می‌دهد.

Print Friendly
تگ ها :
پیوند مطلب قبلی
پیوند مطلب بعدی

درباره بهروز پولادرگ

متولد : ۵ مرداد سال ۱۳۶۷ ، حرفه : ادوبی فلش ، برنامه نویسی و طراحی وب ، طراحی گرافیک ، مالتی مدیا ، نرم افزار های تحت وب

4 نظر

  1. واقعا متشکرم استاد بهروز

  2. سلام آقا بهروز .خسته نباشی
    ببخش که این سوالم بی ربط به موضوعه بالایی هست ولی تقاضا دارم اگه ممکنه کمکم کنید. من در یک قسمت برنامه اجراییم میخوام در حد امکان کلیه محتویات تمپ ویندوز رو خالی کنم و ضمنا با zinc فایل فلش رو اجرایی می کنم . از این کدها استفاده می کنم اما نمی دونم چطوری کاملش کنم تا این فرایند انجام بشه:

    btn.onRelease = function() {
    mdm.FileSystem.deleteFolder(mdm.System.Paths.temp,”noask”);

    }

    • سلام
      این دسترسی وجود ندارد که کلا temp را پاک کنید باید لیست درون آن را بگیرید و در یک حلقه for آنها را پاک کنید
      در ضمن این کار به دسترسی ادمین برای ویندوز ویستا و سون و ایت نیاز دارد
      موفق و پیروز باشید

ارسال جواب

آدرس رایانامه شما منتشر نخواهد شد.فیلد های اجباری علامت گزاری شده اند *

*

رفتن به بالای صفحه