کلید غیررایگان

برای مشاهده تمامی محتوای کلید، می توانید آن را از لینک زیر خریداری نمایید :

خرید کلید (1000 تومان)

ساخت آپلودر (uploader) فایل برای آپلود فایل بر روی یک هاست دیگر (مثلا هاست دانلود)

همان طور که می دانید، اکثر سایت ها، یک هاست (host) معمولی دارند و یک هاست دانلود. در هاست معمولی، قالب سایت قرار داده می شود و پایگاه داده سایت و اطلاعات اصلی سایت در آن ذخیره هستند. اما در هاست دانلود، فایل های با حجم بالا، مثل عکس، فیلم، فایل های zip و ... ذخیره خواهند شد.

ما قبلا در کلید شماره 458 و کلید شماره 478 ، چگونگی آپلود (upload) فایل بر روی هاست را شرح دادیم، اما چنانچه بخواهیم فایل بر روی یک هاست دیگر (مثلا هاست دانلود) آپلود شود، قضیه کمی پیچیده تر خواهد بود.

در این حالت، کاربر باید در هاست معمولی، به وسیله یک فرم (form)، فایل را در کامپیوتر خود انتخاب کند و بعد از فشار دادن دکمه submit فرم، فایل به جای آن هاست معمولی، در هاست دانلود، آپلود شود.

در این مبحث قصد داریم که چگونگی ایجاد امکان آپلود بر روی یک هاست دیگر را شرح بدهیم. ساختار کدها را به ساده ترین شکل ممکن می نویسیم و توسعه آن را به عهده خود شما می گذاریم.

ساختار کلی به این صورت خواهد بود که در هاست معمولی، یک فایل با نام upload.php می سازیم که شامل یک فرم html است که توسط آن، کاربر، فایل مورد نظر خود برای آپلود را انتخاب کرده و سپس دکمه ای را فشار می دهد تا فایل آپلود شود. در همین صفحه، کدهایی وجود دارد که به یک صفحه php در هاست دانلود (همان هاست دیگر) ارجاع می دهد. آن صفحه را upload-to-host.php نامگذاری کرده ایم. صفحه upload-to-host.php ، فایل را دریافت کرده و بروی هاست دانلود بارگذاری می کند (آپلود می کند). بنابراین هاست معمولی، تنها نقش یک واسطه را خواهد داشت و عملا فایلی بر روی آن قرار نمی گیرد.

نکته

در کدها از کتابخانه curl برای PHP استفاده می شود. معمولا در هاست های واقعی، PHP دارای این کتابخانه است، اما چنانچه از یک شبیه ساز (مثل wamp server) بر روی کامپیوتر شخصی خود استفاده می کنید، باید استفاده از کتابخانه curl در آن را فعال کنید.

فایل upload.php در هاست معمولی :

کدهای فایل upload.php را به صورت زیر می نویسیم :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

اکنون کدها را شرح می دهیم.

با کد HTML زیر، یک فرم ساخته ایم که در آن، کاربر، فایل مورد نظر خود برای آپلود را انتخاب می کند :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

پس از آن، کدهای PHP پردازش فرم را داریم، یعنی تنها زمانی اجرا می شوند که کاربر بر روی دکمه ((آپلود فایل)) کلیک کرده باشد :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

در خط زیر، باید آدرس فایل upload-to-host.php را تعیین کنیم (آدرس فایل در هاست دانلود، بنابراین آن را مطابق آدرس فایل بر روی هاست دانلود خود، تغییر بدهید) :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

وقتی کاربر، فایل مورد نظر خود را انتخاب می کند، یک کپی موقت از آن در آدرسی از کامپیوتر وی ذخیره می شود. این آدرس در متغیر زیر ذخیره می شود :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

پس بر اساس این آدرس، می توانیم به کپی موقت فایل دسترسی داشته و اطلاعات مورد نظرمان را از آن استخراج کنیم (جدا از آپلود فایل). به عنوان مثال، ما کدهایی را ذکر کرده ایم که در صورتی که فایل، یک عکس با پسوندهای رایج باشد، طول و عرض آن را به دست آوریم :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

بنابراین شما می توانید برای انواع دیگر فایل ها (ویدئو و ...)، کدهای مورد نظر خود را بنویسید تا قبل از آپلود فایل، اطلاعات مورد نظرتان در مورد فایل را به دست آورید (تا مجبور نباشیم اطلاعات را از صفحه موجود در هاست دانلود دریافت کنیم، بلکه در همین مرحله اول، اطلاعات فایل را به دست می آوریم).

با کدهای زیر، اندازه فایل و نوع فایل (پسوند فایل) را به دست آورده ایم :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

در یک آرایه (array)، اطلاعاتی که باید به صفحه موجود در هاست دانلود (صفحه upload-to-host.php) ارسال شوند را ذخیره می کنیم (تنها اطلاعات ضروری برای ذخیره فایل و سایر اطلاعات به دست آمده از فایل، می تواند در پایگاه داده ای در همین هاست معمولی ذخیره شود و نیازی به ارسال آنها به صفحه موجود در هاست دانلود نیست) :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

original_file_name همان نام اصلی فایل است (تا اگر تمایل داشتید، انتخاب کنید که فایل با همان نام اصلی خود ذخیره شود، نه با نامی که برای آن انتخاب کرده ایم). asset_file_name ، نامی است که برای ذخیره فایل در هاست دانلود انتخاب کرده ایم (فایل با آن نام ذخیره خواهد شد).

با کدهای زیر، فایل و اطلاعات موجود در آرایه، به صفحه upload-to-host.php در هاست دانلود ارسال می شوند (آپلود فایل) :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

صفحه upload-to-host.php در هاست دانلود را به گونه ای طراحی کرده ایم که اگر فایل به درستی آپلود شد (همیشه باید خطاهای احتمالی را در نظر گرفت)، عدد 1 را در خروجی چاپ کند (دقت کنید که بدون چارچوب HTML رایج برای صفحه ها). پس بر اساس آن می توانیم تشخیص بدهیم که فایل با موفقیت آپلود شده است یا خیر :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

فایل upload-to-host.php در هاست دیگر (هاست دانلود) :

کدهای فایل upload-to-host.php را به صورت زیر می نویسیم :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

مشاهده می کنید که تنها کد PHP است و چارچوب HTML را ذکر نکرده ایم تا در پاسخ خروجی، تداخلی ایجاد نکند (در صورت موفقیت در آپلود، تنها عدد 1 را در خروجی داشته باشیم).

با کد زیر، مسیر ذخیره فایل ها را برابر همان پوشه ای در نظر گرفته ایم که فایل upload-to-host.php در آن قرار گرفته :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید

اکنون چنانچه بخواهیم در پوشه ای با نام upload ، فایل های آپلود شده، ذخیره شوند، آن خط از کدها را به صورت زیر تغییر می دهیم :


برای مشاهده کد، باید این کلید را خریداری نمایید
خرید کلید
نکته

یکی از موارد امنیتی که هنگام ساخت صفحه آپلود (upload) باید در نظر گرفته شود، فایل های مجاز برای آپلود می باشد (از نظر پسوند فایل). یعنی مثلا کاربر نباید بتواند یک فایل php را در سایت آپلود کند، زیرا در غیر این صورت، یک هکر می تواند فایل php حاوی کدهای مخرب را آپلود کرده و سپس آدرس آن فایل را در مرورگر اینترنت خود اجرا نماید. بنابراین می توانید شرط های مورد نظر خود برای پسوندهای مجاز برای فایل ها را اعمال نمایید.

نویسنده علیرضا گلمکانی
شماره کلید 3109
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 2 2 0
sam17
۱۳۹۵/۰۹/۱۹
۲۲:۲۳

سلام
ممنون از کد خوبتون
امکانش هست روش محدود کردن فایل های مجاز برای آپلود رو هم بهش اضافه کنید؟ ممنون میشم

admin
۱۳۹۵/۰۹/۲۹
۱۹:۲۳

سلام.
در کدها، پسوند فایل را به دست آورده ایم که در متغیری با نام file_extension ذخیره شده است.
بنابراین اکنون نام پسوندهای مجاز برای فایل را در یک آرایه ذخیره می کنیم (آرایه ای با نام allowed_extensions) و سپس بخش مربوط به آپلود شدن فایل در کدها را باید بر اساس مجاز یا غیرمجاز بودن پسوند فایل، به شکل کلی زیر بازنویسی کنیم :


تابع in_array برای چک کردن وجود یک مقدار در یک آرایه به کار می رود، بنابراین شرط if در کد بالا، چک می کند که آیا پسوند فایل (file_extension) در آرایه allowed_extensions وجود دارد یا نه. اگر وجود دارد، بخشی از کد که مربوط به آپلود فایل است را اجرا می کنیم و اگر وجود ندارد، یک پیام را به کاربر نمایش می دهیم و تذکر می دهیم که پسوند فایل، غیرمجاز بوده است.
شما باید پسوندهای مورد نظر خود را که مجاز می دانید، در آرایه مورد نظر بنویسید.

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)