كيفية رفع الملفات في PHP

يُعد رفع الملفات في PHP من الأمور الأساسية التي يحتاجها معظم مطوري الويب. سواء كنت تطور نظام إدارة محتوى أو تطبيق ويب بسيط، فإن معرفة كيفية التعامل مع عملية رفع الملفات أمر بالغ الأهمية.

ما هي عملية رفع الملفات؟

رفع الملفات هو عملية تحميل ملف من جهاز المستخدم إلى الخادم (server) حيث يمكن معالجته أو تخزينه. هذه العملية تُستخدم بشكل شائع في التطبيقات التي تتطلب تحميل الصور، المستندات، أو أي ملفات أخرى.

تهيئة بيئة العمل لرفع الملفات

قبل أن تبدأ في كتابة الكود لرفع الملفات، من الضروري التأكد من أن بيئة العمل معدة بشكل صحيح. هناك إعدادات في ملف php.ini يجب تعديلها لضمان أن العملية تتم بشكل صحيح.


# تحديد الحد الأقصى لحجم الملف المرفوع
upload_max_filesize = 2M

# تحديد الحد الأقصى لحجم البيانات التي يمكن إرسالها في طلب واحد
post_max_size = 8M

في هذا المثال، يتم تعيين الحد الأقصى لحجم الملف المرفوع إلى 2 ميجابايت، بينما الحد الأقصى لحجم الطلب بالكامل هو 8 ميجابايت. يمكنك تعديل هذه القيم حسب احتياجات مشروعك.

إنشاء نموذج HTML لرفع الملفات

أول خطوة في عملية رفع الملفات هي إنشاء نموذج HTML بسيط يسمح للمستخدمين بتحديد الملف الذي يريدون رفعه. يستخدم هذا النموذج عنصر

مع خاصية enctype لتحديد طريقة تشفير البيانات المرفوعة.

   
   

   

هذا النموذج يتيح للمستخدم اختيار ملف من جهازه، والذي سيتم إرساله إلى صفحة upload.php عند النقر على زر “رفع الملف”.

كتابة كود PHP لمعالجة رفع الملفات

الآن وبعد أن قمنا بإنشاء نموذج HTML، نحتاج إلى كتابة كود PHP لمعالجة الملف المرفوع. الكود التالي يوضح كيفية التحقق من الملف، رفعه، وتخزينه في مجلد معين على الخادم.


<?php
# تحديد مسار المجلد الذي سيتم تخزين الملف فيه
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

# التحقق من أن الملف هو صورة
if($fileType != "jpg" && $fileType != "png" && $fileType != "jpeg" && $fileType != "gif") {
   echo "عذرًا، فقط ملفات JPG, JPEG, PNG, و GIF مسموح بها.";
   $uploadOk = 0;
}

# التحقق من وجود أخطاء أخرى قبل رفع الملف
if ($uploadOk == 1) {
   # محاولة رفع الملف
   if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
      echo "تم رفع الملف ". basename( $_FILES["fileToUpload"]["name"]) . " بنجاح.";
   } else {
      echo "عذرًا، حدثت مشكلة أثناء رفع الملف.";
   }
}
?>

هذا الكود يقوم بالتحقق من أن الملف المرفوع هو صورة بصيغة JPG, JPEG, PNG, أو GIF، ثم يحاول رفعه إلى المجلد uploads/ الموجود على الخادم. إذا تم رفع الملف بنجاح، يتم عرض رسالة تأكيد.

معالجة الأخطاء والتحقق من الأمان

عند رفع الملفات، من الضروري التحقق من الأمان لتجنب رفع ملفات ضارة. يجب التحقق من نوع الملف، حجم الملف، وأي معايير أخرى تعتبر ضرورية لحماية تطبيقك.

الخلاصة

رفع الملفات في PHP هو عملية سهلة ولكنها تتطلب بعض الخطوات لضمان الأمان والتنظيم. باتباع الخطوات المذكورة أعلاه، يمكنك إنشاء نظام رفع ملفات يعمل بكفاءة وأمان.