پیدا کردن یک Upload control، که بتواند با فایل های بزرگ کار کند و هچنین یک نوار پیشرفت (progress bar) را نشان دهد و هنوز بتواند در محیطهای میزبان نیمه ایمن کار کند کار بسیار دشواری است. مشکل اساسی با این کنترلها این است که محیط نیمه ایمن اجازه انعطاف پذیری را به ما نمی دهد واین کار ما را مشکل تر می سازد. ولی این بدین معنی نیست که ما دیگر هیچ امیدی نداریم. یکی از مواردی که این کنترلها سعی برغلبه آن دارند،
پیدا کردن یک Upload control، که بتواند با فایل های بزرگ کار کند و هچنین یک نوار پیشرفت (progress bar) را نشان دهد و هنوز بتواند در محیطهای میزبان نیمه ایمن کار کند کار بسیار دشواری است. مشکل اساسی با این کنترلها این است که محیط نیمه ایمن اجازه انعطاف پذیری را به ما نمی دهد واین کار ما را مشکل تر می سازد. ولی این بدین معنی نیست که ما دیگر هیچ امیدی نداریم. یکی از مواردی که این کنترلها سعی برغلبه آن دارند، زمانی است که مقدار زیادی فایل بار گذاری شده و سرور خطای سرریز حافظه داده است، ولی کلاس HttpPostedFile این اجازه را به ما می دهد تا به صورت پیش فرض، تمام درخواستها که شامل فرمها و فایلهای بارگذاری شده هستند(و بیشتر از 256 KB هستند) را بجای اینکه در حافظه سرور نگهداری کند در دیسک ذخیره کند. پس ما نباید نگران این مشکل باشیم. مورد دیگر با کمک نوار پیشرفت برطرف می گردد، با وارد کردن API، fileReference، مربوط به فلش، به شما اجازه می دهد، فایلی را که از طریق فلش بارگذاری شد ه و همچنین پیشرفت آن را، دنبال کنید. FileReferenceList به کاربر این اجازه را می دهد که چندین فایل در آن واحد انتخاب کند.
استفاده از کد :
من بالاخره تصمیم گرفتم تا اجزاء فلش این مقاله را بهبود بخشم. من با استفاده از Flex آن را دوباره نویسی کردم، ضمناً سعی کردم از پیشنهاداتی که در تابلوی پیامها وجود داشت، به آن اضافه کنم. بعضی از ویژگی های جدید شامل موارد زیر می باشند : اضافه کردن فایل بدون پاک کردن فایل قبلی که اخیراً اضافه شده، حذف کردن فایلهای منحصر بفرد، نوار پیشرفت های جداگانه و همچنین نوار پیشرفت کامل، لغو کردن و دوباره بارگذاری کردن باعث ادامه بارگذاری فایل نمی شود، قابلیت اضافه و حذف فایل در زمان بارگذاری فایل ها. کدها بوسیله Code behind نوشته شده اند و در نتیجه اصلاح کردن آن ساده تر است. علاوه بر این، تنها کاری که باید انجام دهید تغییراتی است که به یک text editor اعمال می کنید و بعد می توانید آنرا با استفاده از Flex 2 SDK کامپایل کنید (که می توانید آن را از سایت Adobe بصورت رایگان دانلود کنید). همچنین مدیریت خطا هم بهتر می شود، با وجود آن ممکن است که نیاز باشد کدهای دیگری برای مدیریت بهتر، به آن اضافه شود. تنها تغییری که به این مقاله باید داد، کامپوننت Update Flash است ، بقیه درست شبیه بهم کار می کنند. من فایل قدیمی fileUpload.swf و fileUpload.fla را در کد منبع گذاشتم، در صورتی که کسی به آن نیاز داشته باشد. منبع برای فایل FlashFileUpload.swf در فایل فشرده FlashFileUpload_src.zip وجود دارد که شامل چهار فایل می باشد: • FlashFileUpload.mxml : برنامه اصلی GUI. • components\ApplicationClass.as : برنامه اصلی code behind. • components\FileUpload.as : کلاس FileUpload که برای بارگذاری فایلهای متفاوت استفاده شده. • components\FileUploadEvent.as :یک کلاس رویداد شخصی (custom event class) • components\FileUploadProgressChangedEvent.as : یک کلاس رویداد شخصی کدها خیلی پیچیده نیستند، و کامل در مورد آنها توضیح داده شده، کدها شامل : • Default.aspx • Default.aspx.cs • Upload.cs • Web.config