آپلود فایل با فلش ۸ و پی اچ پی

ارسال شده توسط بهروز پولادرگ در تاریخ: ۲۰ فروردین ۱۳۸۸

Flash

سلام به دوستان عزیز ؛ بلاخره بعد از مدتها وقت کردم یک مقاله در رابطه با فلش بنویسم امید وارم که مفید واقع بشه
در آخر هم یک کتاب آموزش آژاکس به صورت کاملا فارسی به عنوان هدیه براتون قرار دادم


کلاس های مرجع فایل در اکشن اسکریپت
برای این کار شما نیاز دارید با استفاده از گروه کلاس های filereference پنجره انتخاب گر فایل را صدا بزنید و با استفاده از این پنجره یاز شده آدرس فایلی را که می خواهید آپلود نمایید را به فلش بدهید.شما در واقع توسط متد آپلود این کلاس و شنونده ای می سازید که تا مادامی که عمل آپلود برقرار است رویدادها رو به شما اطلاع  دهد.
اگه همه چیز خوب باشد شما میبایست یک رویداد onComplete را دریافت نمایید در غیر این صورت می بایست یکی دیگر از رویدادهای مربوط به خطاها را دریافت نمایید،شما توضیحات مربوط به این رویداد ها را می توانید در راهنمای فلش مطالعه نمایید با این حال برای راحتی شما در اینجا هم اشاره ای به آنها می کنیم.


متدها

Signature

توضیحات

addListener(listener:Object) : Void Registers an object to receive notification when a FileReference event listener is invoked.
browse([typelist:Array]) : Boolean Displays a file-browsing dialog box in which the user can select a local file to upload.
cancel() : Void Cancels any ongoing upload or download operation on this FileReference object.
download(url:String, [defaultFileName:String]) : Boolean Displays a dialog box in which the user can download a file from a remote server.
removeListener(listener:Object) : Boolean Removes an object from the list of objects that receive event notification messages.
upload(url:String) : Boolean Starts the upload of a file selected by a user to a remote server.

رویداد ها

رویداد

توضیحات

onCancel = function(fileRef:FileReference) {} Invoked when the user dismisses the file-browsing dialog box.
onComplete = function(fileRef:FileReference) {} Invoked when the upload or download operation has successfully completed.
onHTTPError = function(fileRef:FileReference, httpError:Number) {} Invoked when an upload fails because of an HTTP error.
onIOError = function(fileRef:FileReference) {} Invoked when an input/output error occurs.
onOpen = function(fileRef:FileReference) {} Invoked when an upload or download operation starts.
onProgress = function(fileRef:FileReference, bytesLoaded:Number, bytesTotal:Number) {} Invoked periodically during the file upload or download operation.
onSecurityError = function(fileRef:FileReference, errorString:String) {} Invoked when an upload or download fails because of a security error.
onSelect = function(fileRef:FileReference) {} Invoked when the user selects a file to upload or download from the file-browsing dialog box.

مثالی برای آپلود

//دامین ها مجاز برای عمل آپلود توسط فایل فلش
System.security.allowDomain("http://localhost", "127.0.0.1");
import flash.net.FileReference;

//ایجاد آبجکت برای لیسترنر (شنونده)
var listener:Object = new Object();

listener.onSelect = function(selectedFile:FileReference):Void {
statusArea.text += "Attempting to upload " + selectedFile.name + "\n";
selectedFile.upload("http://localhost/upload/upload.php");
};

// شروع آپلود فایل
listener.onOpen = function(selectedFile:FileReference):Void {
statusArea.text += "Uploading " + selectedFile.name + "\n";
};
listener.onHTTPError = function(file:FileReference, httpError:Number):Void {
imagePane.contentPath = "error";
imagePane.content.errorMSG.text = "HTTPError number: "+httpError +"\nFile: "+ file.name;
}

listener.onIOError = function(file:FileReference):Void {
imagePane.contentPath = "error";
imagePane.content.errorMSG.text = "IOError: "+ file.name;
}

listener.onSecurityError = function(file:FileReference, errorString:String):Void {
imagePane.contentPath = "error";
imagePane.content.errorMSG.text = "SecurityError: "+SecurityError+"\nFile: "+ file.name;
}

// فایل آپلود شده
listener.onComplete = function(selectedFile:FileReference):Void {
statusArea.text += "Upload finished.\nNow downloading " + selectedFile.name + " to player\n";
details.text = ""
for(i in selectedFile) details.text +="<b>"+i+"</b> "+selectedFile[i]+"\n"
downloadImage(selectedFile.name);
};

var imageFile:FileReference = new FileReference();
imageFile.addListener(listener);

در ابتدای کد زیر برای امنیت پروژه شما می بایست نام دامین های مجاز برای کار با این فایل را بدهید تا فقط بر روی این دامین ها عمل آپلود مجاز باشد ، البته در صورتی که میخواهید بر وری تمامی ساب دامین ها یک دامین فعال نمایید میبایست به صورت زیر عمل نمایید :

http://*.iflashlord.com

و یا به صورت زیر

http://www.iflashlord.com

البته در روش دوم فقط دامین اصلی سات مجاز میباشد ؛ به جای iflashlord.com نام دامین موردنظرتون رو بنویسید.
در مثال بالا فرض بر این گرفته شده که شما پروژه را بر روی لوکال هاست خود اجرا می کنید به همین دلیل تنها دامین مجاز برای شما لوکال هاست میباشد.
شما میتوانید تعداد زیادی از دامین ها مورد نظرتون رو به این بخش اضافه نمایید فقط کافی است که با کاما آنها را از هم جدا نمایید.
توجه داشته باشید رویداد onComplete بعد از اتمام کار آپلود فعال میشود.
و رویداد onSelect بعد از انتخاب فایل در پنجره انتخاب فایل فعال می شود.
و رویداد onProgress که در زمان آپلود فعال می شود البته فقط دارای مقدار یک (۱) میباشد که برای اتمام عملیات میباشد و نمی تواند درصد اتمام عملیات را بر گرداند، پس در نتیجه شما نمیتونید یک پروسس بار برای نمایش مقدار آپلود شدن قرار دهید فقط میتوانید در زمان اجرای عملیات بارگزای فقط یک متن یا انیمیشن ساده را که در انجام بودن عملیات را برساند نشان دهید.

با کد های زیر ( که در ادامه مطلب مشاهده می کنید) در ابتدا رویداد اتمام آپلود را ثبت می نماییم و فرمان دانلود تصویر را می دهد که در واقع تابع imageDownloaded را بعد از اتمام عملیاد آپلود فایل فعال می کند.

و بعد محدودیتی برای پسوندهای مورد نظرتون که اجازه آپلود آنها را می دهید قرار می دهید ، شما میتوانید پسوندهای مورد نظرتون را اضافه نمایید.

و در آخر هم توابع دانلود تصویر آپلود شده را تعریف می نمایید

توجه در آخر این پروژه تصویر آپلود شده نمایش داده می شود و برای نمایش این تصویر از کامپوننت فلش که از بخش کامپوننت های فلش با نام scrollPane قابل درسترسی هست استفاده شده است.
شما می بایست نام Instance name  را در پانل Properties با scrollPane قرار دهید تا در آخر تصویر در این بخش بارگزاری شود.

uploadBtn.onPress = uploadImage;
imagePane.addEventListener("complete", imageDownloaded);

// ایجاد محدودیت نوع فایل و باز کردن پنجره انتخاب فایل
function uploadImage(event:Object):Void {
imageFile.browse([{description: "Image Files", extension: "*.jpg;*.gif;*.png"}]);
}

// برابر با ۱- می شود و یک پیغام خطا داده میشود event.total  در صورت که تصویر آپلود شده دانلود نشود
function imageDownloaded(event:Object):Void {
if(event.total == -1) {
imagePane.contentPath = "error";
}
}

// فلش scrollPane نمایش تصویر دانلود شده در
function downloadImage(file:Object):Void {
imagePane.contentPath = "http://localhost/upload/files/" + file;
}

در آخر هم برنامه نویسی سمت سرور (پی اچ پی)

//در صورتی که پوشه مربوطه برای آپلود عکسها و جود نداشت این پوشه رو بساز
if(!is_dir("./files")) mkdir("./files", 0755);

// آپلود می شود move_uploaded_file در کد زیر ضمن دریافت مقادیری که توسط فلش ارسال شده فایل با تابع

move_uploaded_file($_FILES['Filedata']['tmp_name'], "./files/".$_FILES['Filedata']['name']);

// در زیر دسترسی به فایل آپلود شده رو تغییر میدهیم تا امکان باز نویسی و حذف فایل نیز موجود باشد
// نیز می بایست دارای دسترسی ۷۵۵ باشد files در ضمن پوشه

chmod("./files/".$_FILES['Filedata']['name'], 0777);

خبری خوب برای افرادی که هیچ رابطه خوبی با پی اچ پی ندارند!!
شما می توانید از دیگر زبانهای برنامه نویسی هم برای این کار استفاده نمایید ولی اصول کار همین می باشد به روش و نام دریافت مقدارهای فایل ها دقت نمایید.

سورس کدهای پروژه : برای دانلود اینجا کلیک نمایید

یک هدیه ، یک کتاب الکترونیکی
یک کتاب فارسی آموزش آژاکس برای علاقه مندان به این تکنولوژی (اصول تکنیک آژاکس) برای دانلود اینجا کلیک کنید
به موارد خوبی اشاره کرده که خوندنش خالی از لطف نیست حجم زیادی هم نداره و به راحتی قابل دانلود هستش
انشاءاالله مفید فایده واقع بشه براتون

یک ستارهدو ستارهسه ستارهچهار ستارهپنج ستاره (3 رای ها, معدل: 500 از 5)
کمی صبر نمایید ... کمی صبر نمایید ...
Balatarin Donbaleh Mohandes ارسال به آئیریانا Delicious Digg Stumbleupon Furl Friendfeed Greader Facebook Twitter Subscribe to Feed
مشترک مطالب پادشاه فلش شويد!

آدرس ایمیل خود را وارد نمایید :

آيا شما از اين مطلب لذت برديد؟ چرا ديدگاه خود را در زير نمي نويسيد و گفتگو را ادامه دهيد، يا مشترک خوراک من شويد و مقاله هايي مانند اين را روزانه توسط ایمیل خود دریافت نمایید.

بنر فلش خود را به صورت آنلاین بسازید!


مطالب مرتبط

نسخه جدید (فلش بنر آنلاین) ارائه شد!
سلام خدمت دوستان شفیق و همراه.... نسخه جدید بنر ساز آنلاین فلش در تاریخ بیست...
۴۸ نکته و اصل مهم در برنامه نویسی پی اچ پی
به نام آن خدایی که نام او راحت روح است و پیغام او مفتاح فتوح است و سلام او...
محاسبه سرعت اینترنت با پی اچ پی
سلام خدمت دوستان عزیز ، این بار هم  یک مقاله کوتاه و مفید  ،  یکی از کدهای...
توابع در اکشن اسکریپت ۳
توابع Function یکی از مواردی که در برنامه نویسی اکشن اسکریپت جایگاه مهمی...

۶ پاسخ برای "آپلود فایل با فلش ۸ و پی اچ پی"

1 | سمیرا

۱۲ شهریور ۱۳۸۸ در ساعت ۳:۰۳ ق.ظ

مرسی ، مفید و مختصر بود ، ممنون.

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

۱۲ شهریور ۱۳۸۸ در ساعت ۴:۳۹ ب.ظ

متشکر از نظرتون سمیرا ی عزیز ;)

3 | mafton

۳ مهر ۱۳۸۸ در ساعت ۱۱:۵۳ ب.ظ

سلام اقا من میخوام همین کاری مه شما کردین رو یاد بگیرم اما شما خیلی حرفه ای گفتین اگه ممکن هست یه کم ساده تر و واسه as3 بگید خیلی ممنون میتونید هم id من رو add کنید تا بیشتر با هم صحبت کنیم

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

۴ مهر ۱۳۸۸ در ساعت ۱۲:۱۳ ق.ظ

همه چیز به صورت کامل و با کد توضیح داده شده ، هر جایی که مشکلی دارید ، بفرمایید
در ضمن کد نوشته شده برای AS2 نوشته شده و به همین دلیل به کلی با روش در AS3 متفاوت می باشد
انشاء الله در آینده در ادامه همین مطلب روش نوشتن کد برای AS3 هم نوشته می شود
ممنون از نظرتون mafton عزیر
موفق و پیروز باشید

5 | mori

۴ آبان ۱۳۸۸ در ساعت ۱۰:۲۸ ق.ظ

سلام
مقاله خیلی عالی بود
ولی کد های بخش پی اچ پی رو در کجا باید بنویسیم و با چه نامی ذخیره کنیم
راستی سورس پروژه رو هم نتونستم دانلود کنم
متشکرم

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

۵ آبان ۱۳۸۸ در ساعت ۴:۵۲ ب.ظ

کدها رو توی یک فیل متنی ذخیره کنید با نامی که در فلش داده شده تغییر نام دهید پسوند می بایست php باشد و بعد باید روی سرور قرار گیرید و یا روی localhost برای localhost بر روی کامپیوتر خود می بایست از نرم افزاریهای Wamp و یا Easy PHP استفاده کنید

ممنون برای نظرتون ، موفق باشید

نوشتن نظر


  • بهروز پولادرگ: سلام نوید عزیز جات خالی بود حسابی... ورک شاپ خوبی بود... اوکی O2 رو دارم .... موفق و پیروز ب
  • زری: سلام مثل همیشه بی نظیری بهروز جان در پناه رسول مهربانی ها موفق و پایدار باشی من خیلی خ
  • نويد: بهروز خان عزیز از اعلام این خبر ممنون... اما متاسفانه یکم دیر مطلع شدم و برای فردا هم نمیت
  • بهروز پولادرگ: دکمه ای با instance name با مقدار mybtn بسازید و از کد زیر استفاده نمایید [sourcecode lang="actionscript3"] mybtn.addE

درباره نویسنده

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

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



من در انجمن مجید آنلاین
مصاحبه من با ایرنا در روزنامه ابرار اقتصادی -بخش رایانه
رزومه من در کلوب دات کام
مجله الکترونیکی گاما مگ

تقویم مطالب

فروردین ۱۳۸۸
ش ی د س چ پ ج
« اسفند   اردیبهشت »
۱۲۳۴۵۶۷
۸۹۱۰۱۱۱۲۱۳۱۴
۱۵۱۶۱۷۱۸۱۹۲۰۲۱
۲۲۲۳۲۴۲۵۲۶۲۷۲۸
۲۹۳۰۳۱  

خبرنامه

آدرس ایمیل خود را وارد نمایید :

با عضویت در خبرنامه مطالب جدید پادشاه فلش به آدرس ایمیل شما ارسال می شود، برای عضویت تنها کافیست آدرس ایمیل خود را وارد نمایید و بر روی دکمه عضویت کلیک کنید

نظرسنجی

مطالب مورد علاقه شما چیست ؟

مشاهده نتایج

بارگذاری ... بارگذاری ...