خانه » برنامه نویسی » اکشن اسکریپت » آپلود فایل با فلش ۸ و پی اچ پی

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

کلاس های مرجع فایل در اکشن اسکریپت
برای این کار شما نیاز دارید با استفاده از گروه کلاس های 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); 

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

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

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

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

22 نظر

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

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

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

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

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

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

  4. می شه راهنمایی کنید که من چطوری می تونم فلشی رو که ساختم رو سایتم قرار بدم؟

    • دوست عزیز ابتدا فایل مربوطه را روی یکی از سرورهای رایگان آپلود نمایید ، حال اگر با تگ های html آشنایی دارید با کمک تگ Object و در غیز این صورت در زمان تست فلش کلید F12 را بفشارید ، فایلی با فرمت HTML خروجی کنار پروژه شما قرار می گیرد که درون آن کد مورد نیاز وجود دارد
      شما می بایست فقط نام فایل درون این فایل را مثلا test.swf با نام فایل خود با آدرس کامل تعویض نمایید
      موفق و پیروز باشید

  5. می شه این سایت هارو معرفی کنید.
    من فقط vimeo رو میشناسم که نمیشه فلش آپلود کرد و http://www.swfupload.com/ که اونم بعد از آپلود لینک می ده نه HTML اگه راهنمایی کید ممنون می شم.

    • در صفحه ای که مثلا همین سایت swfupload بعد از آپلود به شما می دهد کد سورس صفحه را مشاهده نمایید و درون آن به دنبال .swf بگردید ، آدرس کامل فایلتون رو پیدا می کنید

      موفق و پیروز باشید

  6. چطور می تونم رنگ متن یک لیبل رو از فلش نه از اسکریپت تغییر داد؟
    و از داخل اسکریپت visibleسمبل رو false کرد؟

    • برای مورد اول در ActionScript3 می بایست از ColorTransform استفاده کنید در این مورد جستجو نمایید
      در مورد دوم که این کار به راحتی با نوشتن نام Symbol و استفاده از . به صورت زیر می توان این کار را کرد (توجه نمایید در اکشن ۲ می بایست به ابتدای visible یک _ اضافه نمود)

      البته با استفاده از متد alpha حالتی مشابه ایجاد می شود که هر کدا نسب به نوع پروژه مورد استفاده قرار می گیرند

      [code lang="actionscript3"
      my_mc.alpha = 0;

  7. “برای مورد اول در ActionScript3 می بایست از ColorTransform استفاده کنید”
    منظورم این بود که از تو محیط فلش نمیشه تغییر داد؟حتما باید از اسکریپت باشه؟

    • بله متوان در محیط فلش از طریق
      Properties -> Color Effect -> Tint
      یا
      Properties -> Color Effect -> FILLTER -> Adjust Color
      این کار را به راحتی انجام داد

      البته این مورد دوم بر روی MovieClip ها اعمال می شود

      در صورتی که این گزینه ها را نداشتید موردی که دارید را درون یک MovieClip قرار دهید

  8. من این موردی که گفتین رو امتحان کردم ولی رنگ زمینه رو عوض می کنه نه رنگ نوشته رو

    • در مورد کامپوننت های مربوطه به خود فلش برای تغییر تمامی موارد مثل رنگ های هر بخش خصوصیاتی ایجاد شده است که با مشاهده راهنمای مربوطه به بخش کامپوننت ها می توانید به اون مورد دسترسی داشته باشید

      به صورتی که می خواهید با استفاده از
      Properties -> Color Effect ->Advanced
      می توانید با کم و زیاد کردن رنگ ها به موردی که می خواهید برسید

      ولی در کل به صورت اصولی در این موارد همان روشی است که در بالا گفتم

      موفق و پیروز باشید

  9. سیاوش از همدان

    سلام مهندس بهروز عزیز که داشته هاتونو با شرح صدر در اختیار ایرانیان قرار میدید.
    ازتون ممنونیم.
    سوال من اینه که اولا این نقشه افراد آنلاین رو از چه سایتی خرید کردین که منم این کارو برای وبسایتم بکنم؟
    دوما مهندس جان اسکریپت های پی اچ پی و صفحات اچ تی ام ال رو باید در چه دایرکتوری هایی روی سرور ذخیره کنیم؟
    یه چیزایی راجع به cgi-bin شنیدم و دیدم ولی نمیتونم درک کنم.
    میشه راهنمایی کنید و اگه میشناسید یه منبع معرفی کنید برای آموزش بارگذاری وب سایت روی سرویس دهنده های لینوکس و ویندوز؟
    بازم متشکرم از این وبسایت زنده و بروز شما

    • سپاسگزارم دوست عزیز

      ۱ – این یک سرویس رایگان روی وب می باشد می توانید نمونه آن را از سایت زیر دریافت نمایید و در وبلاگ و یا وبسایت خود قرار دهید
      http://whos.amung.us

      2- در مورد پی اچ پی دایرکتوری خاصی مانند سرور های ویندوزی برای asp.net نیاز نمی باشد هر دایرکتوری داخل root سرورتون باشه فایل های پی اچ پی اجرا می شوند

      ۳ – بارگزاری وبسایت روی سرورهای مختلف بسته به نوع اسکریپت تفاوت های کمی دارد ولی اصل کار انتقال فایل ها به سرور حال از هر طریقی مثلا FTP و… می باشد

      موفق و پیروز باشید

  10. salam behroz jan tashakor baraye amozesh
    behroz jan file ha linkesh kharabe va man shafifan be in class va file ha niyaz daram
    va yek khahesh daram bandeham mikham dar php estefade konam ama chon dar iran nistam kolan be font farsi dastresi nadaram
    agar lotf koni on file ha ke download nemishe hamra bacodehaye safhe php ra barayam dar yek fle zakhre va email koni yek donia mamnon misham
    sepasgozar

  11. سلام بهروز جان
    داداش خیلی گلی
    ممنون فقط یک چیزی بهروز جان

    داداش این از سیستم انتقال به سرور میده و از لینک که انجام نمیده

    و دیگه اینکه اگه من بخوام اینو زیر ادیتور مثلا قرار بدم با چه کدی باید اینو فراخوند در زبان php

    • برای این روش برای آپلود فایل از سیستم شما بر روی وب سرور می باشد
      ولی انتقال از آدرس می بایست اسکریپت های letch را چک کنید و مثلا با فلش آدرس مربوطه را به فایل پی اچ پی ی انتقال را انجام می دهد بدهید
      تا کار توسط زبان برنامه نویسی سمت سرور انجام شود

      این روش که توضیح داده شده است به صورت پیشرفته تر در بخش آپلود سریع سیستم های مختلف مثلا آپلود سریع مدیریت وردپرس و یاهو میل و… استفاده شده است.

      موفق و پیروز باشید

ارسال جواب

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

*

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