آپلود فایل در PHP

آپلود فایل در PHP

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

تغییر فایل ها در PHP: با استفاده از تابع rename در PHP ، می توانیم نام یک فایل را تغییر بدهیم.

آپلود فایل در PHP آپلود فایل در php آپلود فایل در PHP rename

آپلود فایل در PHP

مثلا به مثال  زیر توجه کنید:

فرض کنید در پوشه ای با نام myFolder (که در کنار صفحه PHP فعلی قرار گرفته)، یک فایل با نام myFile.png داریم و قصد داریم نام آن را به myFile_new_name.png تغییر بدهیم

آپلود فایل در PHP

می توان به کمک یک اسکریپت PHP و فرم HTML به کاربر امکان داد، فایل های مورد نیاز را در server بارگذاری کند. در ابتدای امر فایل ها در پوشه (directory) موقتی ذخیره گردیده، سپس توسط اسکریپت PHP به مقصد نهایی انتقال داده می شوند.

اطلاعات فایل phpinfo.php توضیح می دهد که دایرکتوری موقتی که برای آپلود فایل بکار می رود کدام است مانند upload_tmp_dir، همچنین حداکثر حجم فایلی که می تواند با استفاده از php بار گذاری شود در فایل تنظیمات  php.ini مشخص می شود. پارامترهای یاد شده در فایل پیکربندی php.in قرار می گیرند.

فرایند بارگذاری فایل در سرور به شرح زیر می باشد.

  • کاربر صفحه ی HTML  مورد نظر که شامل یک فایل متنی (text file)، دکمه ی browse و submit می باشد، را باز می کند.
  • کاربر روی دکمه ی browse کلیک کرده و فایل انتخابی برای ارسال از رایانه ی محلی را انتخاب می کند.
  • مسیر کامل فایل انتخابی در text field نمایان شده و پس از آن کاربر روی دکمه ی submit کلیک می کند.
  • فایل انتخابی در پوشه ی موقتی بر روی server ارسال شده و سپس بارگذاری می شود.
  • اسکریپت PHP به عنوان form handler (اجرا کننده ی فرم) در خصیصه action فرم تعریف شده بررسی می کند که آیا فایل های ارسالی دریافت شده اند یا خیر، سپس آن ها را در پوشه ی موردنظر جای گذاری می کند.
  • اسکریپت PHP موفقیت عملیات را به کاربر اعلام می کند.
  • به طور معمول لازم است به هنگام نوشتن فایل، سطح دسترسی به هر دو مکان قرار گیری موقت و نهایی فایل ها، روی file writing، تنظیم شده باشد.
  • اگر حتی تنها یکی از آن ها مجوز یا سطح دسترسی read-only داشته باشند، کل فرایند با شکست مواجه می شود.
  • فایل آپلود شده می تواند یک فایل متنی، تصویری و یا هر فایل دیگری باشد.

برای قسمت آپلود، ابتدا یک فرم HTML می سازیم و سپس اطلاعات حاصل از فرم را به یک فایل PHP می فرستیم تا بر روی آن اطلاعات، پردازش کند (این شیوه کلی ساخت فرم ها است). بنابراین یک فایل با نامی دلخواه می سازیم و کدهای زیر را درون آن می نویسیم (چون یک فرم HTML است، پس می تواند پسوند فایل، html یا php باشد) :

همان طور که از کد بالا مشخص است، این فرم، اطلاعات را با روش POST ، به فایل upload_file.php می فرستد تا این فایل، بر روی اطلاعات دریافتی، پردازش کند. مشخصه enctype برای فرم، مشخص می کند که نوع اطلاعاتی که کاربر ارسال می کند، چه می باشد. با انتخاب multipart/form-data برای این مشخصه، اعلام کرده ایم که اطلاعات ارسالی، به صورت اطلاعات دودویی (binary data) است.

درون تگ input ، مشخصه type را برابر file قرار داده ایم تا اعلام کنیم که نوع ورودی، به صورت فایل می باشد. بنابراین درون فرم، یک دکمه browse به کاربر نمایش داده می شود تا با آن بتواند فایل مورد نظر را از کامپیوتر خود انتخاب نماید.

یک فایل با نام upload_file.php می سازیم و کدهای زیر را درون آن می نویسیم :

ایجاد محدودیت برای آپلود فایل :

ذخیره فایل آپلود شده :

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

به طور خلاصه می توان گفت که:

ما بحث آپلود فایل روی سرور را به چند مرحله تقسیم می‌کنیم:

۱- طراحی فرم برای دریافت فایل از کاربر:

ابتدا به این کد دقت کنید و سعی کنید آن‌را تحلیل کنید:

فرم به این صورت دیده خواهد شد:

upload_form1 آپلود فایل در php آپلود فایل در PHP upload form1

مشخص است که این فرم، یک فیلد برای دریافت فایل و یک دکمه ارسال دارد. اطلاعات فرم به فایل upload.php فرستاده می‌شود و در آنجا تحلیل می‌شود.

در این مرحله توجه به نکات زیر الزامی است:

  •  در فرمی که قرار است یک فایل را به صفحه پردازشگر ارسال کند، نوشتن عبارت enctype=”multipart/form-data”‎ الزامی است. (خط اول در کد بالا)
  •  متود این نوع فرم‌ها حتماً باید post باشد. (خط اول در کد بالا)
  •  یک تگ input با نوع file نیاز دارید. (خط سوم در کد بالا)
  •  خط دوم کد بالا فیلدی مخفی (hidden) برای تعیین حجم مجاز فایل در سمت کلاینت. اگر از این فیلد استفاده نکنید، کاربر ممکن است یک فایل حجیم را انتخاب کند و زمان زیادی منتظر بماند تا آپلود شود و بعد شما در سمت سرور حجم را بررسی کنید و بگویید که حجم آن زیاد است!! از این فیلد استفاده کنید تا بدون معطلی، اگر حجم فایل، بیش از حد مجاز بود، به کاربر هشدار داده شود. (حجم را بر حسب بایت وارد کنید)

۲- کدنویسی فایل پردازشگر فرم:

حالا باید فایل upload.php را کدنویسی کنید.

به کد زیر دقت کنید و سعی کنید آن‌را تحلیل کنید:

مراحل:

  • ابتدا در خط دوم یک متغیر در نظر گرفته‌ایم که مسیر آپلود را مشخص می‌کند.
  •  در خط سوم، نام فایل را به دست آورده‌ایم و به انتهای مسیر آپلود چسبانده‌ایم.
  •  در خط چهارم گفته‌ایم اگر عملیات آپلود فایل با موفقیت انجام شد، پیغام “فایل با موفقیت آپلود شد” را نمایش بده. در غیر اینصورت، خطاهای احتمالی را.

۳- بررسی پسوند:

اگر می‌خواهید فایل را محدود به یک پسوند خاص کنید (مثلاً jpg) از قطعه کد زیر استفاده کنید:

این کد را باید قبل از echoی اول در کد بالا به کار بگیرید.

۴- خواندن فایل:

اگر می‌خواهید اطلاعات فایلی که آپلود شده است را بخوانید و احتمالاً بررسی کنید که حاوی کدهای مخرب و … نباشد، از قطعه کد زیر استفاده کنید:

این کد را باید بعد از echoی اول در کد فایل پردازشگر به کار بگیرید.

حالا تمام محتوای فایل در متغیر theData است. می‌توانید آن را به هر صورت که خواستید پردازش کنید.

کلماتی مثل MAX_FILE_SIZE و name در $_FILES[‘attachment’][‘name’]‎ کلمات کلیدی هستند و نباید تغییر یابند. (بهتر است اگر در ابتدای راه هستید، نام‌ها را تغییر ندهید)
آموزش PHP آموزش طراحی وب

دیدگاه خود را بیان کنید