English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تحقيق ميزة تحميل الملفات في php بسهولة

رفع ملفات PHP

يمكن من خلال PHP رفع الملفات إلى الخادم.

تم إكمال هذا المثال في مشروع test، بنية الدليل كالتالي:

test
|-----upload              # مجلد رفع الملفات
|-----form.html           # ملف النموذج
|-----upload_file.php  # شيفرة رفع الملفات PHP

تنزيل الشيفرة المصدرية:رفع الملفات

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

<html>
<head>
<meta charset="utf-8">
<title>صناعي التعليمات(runoob.com)</title>
</head>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
 <label for="file">اسم الملف:</label>
 <input type="file" name="file" id="file"><br>
 <input type="submit" name="submit" value="إرسال">
</form>
</body>
</html>

قم بتخزين هذا الكود في ملف form.html.
هناك بعض الملاحظات المتعلقة بالنموذج HTML المذكور أعلاه:

1. خاصية enctype في علامة <form> تحدد نوع المحتوى الذي يجب استخدامه عند تقديم النموذج. عند الحاجة إلى بيانات ثنائية، مثل محتويات الملف، استخدم "multipart/form-data".
2. خاصية type="file" في علامة <input> تحدد أن يجب معالجة الإدخال كملف. على سبيل المثال، عند عرضه في المتصفح، يمكنك رؤية زر التصفح بجانب حقل الإدخال.
ملاحظة:سماح المستخدمين بتحميل الملفات يمثل خطرًا أمنيًا كبيرًا. يرجى السماح فقط للمستخدمين المعتادين بتنفيذ عملية تحميل الملفات.

إنشاء سكربت التحميل
ملف "upload_file.php" يحتوي على كود لتحميل الملفات:

<?php
إذا ($_FILES["file"]["error"] > 0)
{
 echo "خطأ: " . $_FILES["file"]["error"] . "<br>";
}
else
{
 إذاعة "اسم الملف المرسل: " . $_FILES["file"]["name"] . "<br>";
 إذاعة "نوع الملف: " . $_FILES["file"]["type"] . "<br>";
 إذاعة "حجم الملف: " . ($_FILES["file"]["size"] / 1024) . " كيلو بايت<br>";
 إذاعة "الموقع المؤقت لتخزين الملف: " . $_FILES["file"]["tmp_name"];
}
?>

من خلال استخدام مصفوفة PHP العالمية $_FILES، يمكنك تحميل ملفات من جهاز المستخدم إلى الخادم البعيد.
المعامل الأول هو اسم input في النموذج، والمعامل الثاني يمكن أن يكون "name"، "type"، "size"، "tmp_name" أو "error". كما يلي:
$_FILES["file"]["name"] - اسم الملف المرسل
$_FILES["file"]["type"] - نوع الملف المرسل
$_FILES["file"]["size"] - حجم الملف المرسل، بالبايت
$_FILES["file"]["tmp_name"] - اسم النسخة المؤقتة للملف الموجود على الخادم
$_FILES["file"]["error"] - رموز الأخطاء الناتجة عن تحميل الملف

هذه طريقة تحميل ملفات بسيطة جدًا. بناءً على اعتبار الأمان، يجب أن تزيد من القيود المتعلقة بمن يجب السماح له بتحميل الملفات.

قيود التحميل
في هذا النص، قمنا بزيادة قيود تحميل الملفات. يمكن للمستخدمين فقط تحميل ملفات .gif، .jpeg، .jpg، .png، ويجب أن يكون حجم الملف أقل من 200 كيلو بايت:

<?php
// امتادات الصور المسموح بالتحميل
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);  // الحصول على امتداد الملف
إذا ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800) // أقل من 200 كيلو بايت
&& in_array($extension, $allowedExts))
{
 إذا ($_FILES["file"]["error"] > 0)
 {
 إذاعة "خطأ: " . $_FILES["file"]["error"] . "<br>";
 }
 else
 {
 إذاعة "اسم الملف المرسل: " . $_FILES["file"]["name"] . "<br>";
 إذاعة "نوع الملف: " . $_FILES["file"]["type"] . "<br>";
 إذاعة "حجم الملف: " . ($_FILES["file"]["size"] / 1024) . " كيلو بايت<br>";
 إذاعة "الموقع المؤقت لتخزين الملف: " . $_FILES["file"]["tmp_name"];
 }
}
else
{
 echo "تنسيق الملف غير صحيح";
}
?>

حفظ الملف المرسل
المثال المقدم أدناه أنشأ نسخة مؤقتة للملف المرسل في مجلد مؤقت PHP على الخادم.
هذه النسخة المؤقتة للملف ستختفي عند إنهاء السكربت. لتح Konservieren der hochgeladenen Datei، يجب نسخها إلى مكان آخر:

<?php
// امتادات الصور المسموح بالتحميل
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
إذاعة $_FILES["file"]["size"];
$extension = end($temp);  // الحصول على امتداد الملف
إذا ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800) // أقل من 200 كيلو بايت
&& in_array($extension, $allowedExts))
{
 إذا ($_FILES["file"]["error"] > 0)
 {
 إذاعة "خطأ: " . $_FILES["file"]["error"] . "<br>";
 }
 else
 {
 إذاعة "اسم الملف المرسل: " . $_FILES["file"]["name"] . "<br>";
 إذاعة "نوع الملف: " . $_FILES["file"]["type"] . "<br>";
 إذاعة "حجم الملف: " . ($_FILES["file"]["size"] / 1024) . " كيلو بايت<br>";
 echo "الموقع المؤقت لتخزين الملف: " . $_FILES["file"]["tmp_name"] . "<br>";
 // تحقق من وجود الملف في مجلد upload الحالي
 // إذا لم يكن هناك مجلد upload، تحتاج إلى إنشائه، صلاحيات مجلد upload هي 777
 if (file_exists("upload/" . $_FILES["file"]["name"]))
 {
 echo $_FILES["file"]["name"] . " ملف موجود بالفعل. ";
 }
 else
 {
 // إذا لم يكن ملف المجلد upload موجودًا، فإنه يتم تحميل الملف إلى مجلد upload
 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
 echo "تم تخزين الملف في: " . "upload/" . $_FILES["file"]["name"];
 }
 }
}
else
{
 echo "تنسيق الملف غير صحيح";
}
?>

السكرابت أعلاه يتحقق من وجود الملف، إذا لم يكن موجودًا، فإنه ينسخ الملف إلى مجلد "upload".
تعليمات عرض عملية تحميل الملف كالتالي:

هذا هو نهاية محتويات هذا المقال، نأمل أن تكون قد ساعدتكم في التعلم، ونأمل أيضًا أن تدعموا تعليمات呐喊.

بيان: محتويات هذا المقال تم جمعها من الإنترنت، ملكية المحتويات لصاحب الحقوق، المحتويات تقدمها المستخدمين عبر الإنترنت بطرقهم الخاصة، هذا الموقع لا يمتلك الحقوق، ولم يتم تعديل المحتويات بشكل يدوي، ولا يتحمل أي مسؤولية قانونية ذات صلة. إذا كنت قد وجدت محتويات تتضمن حقوق النسخ، فنرجو منك إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # ب @) للإبلاغ، وتقديم الدليل، وإذا تم التحقق من ذلك، سيتم حذف المحتويات المزعجة فورًا.

توصيات قد تفضلك