لتحميل الملفات، نحتاج إلى استخدام نوع الملف = نوع النموذج في HTML وسمة enctype الخاصة به. هذا هو ما علينا جميعا أن نستخدمه. بالطبع، يجب علينا استخدام مكتبة وظائف FILE ومكتبة وظائف نوع السلسلة ومكتبة وظائف الدليل و$_FILES[] بين مكتبات وظائف PHP.
ربما يكون لكل موقع قيود كثيرة على تحميل الملفات، وقد تشمل هذه القيود نوع الملف وحجم الملف وامتداده ووجود دليل التحميل ووجود ملف التحميل وقابلية الكتابة في الدليل وقابلية القراءة وإعادة التسمية. الملفات التي تم تحميلها وكيفية نسخ الملفات من ذاكرة التخزين المؤقت إلى الدليل الذي تحتاجه.
بالطبع، لا يمكن تجاهل المعالجة المسبقة للأخطاء! إذا ناقشنا الأمر بشكل أكبر، يمكننا أيضًا تمكين تسجيل سجل الأحداث لعمليات الملف.
وفيما يلي نقوم بتنفيذ هذه الوظائف من خلال برنامج:
الأول هو قيمة المتغير المحددة مسبقًا، والتي تتضمن حجم الملف، ونوع امتداد الملف، ونوع MIMI، وما إذا كان سيتم حذف متغير التبديل
$MAX_SIZE = 2000000؛
$FILE_MIMES = مصفوفة('image/jpeg','image/jpg','image/gif'
,'image/png','application/msword');
$
FILE_EXTS = array('.zip','
.jpg','.png','.gif');
تعيين متغيرات الوصول إلى المتصفح ومتغيرات الوصول إلى الدليل:
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = http://.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]);
$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF' ];
$upload_dir = files/;
$upload_url = $url_dir./files/;
$message =;
أنشئ دليل التحميل وقم بتغيير الأذونات وفقًا لذلك:
if (!is_dir(files)) {
إذا (!mkdir($upload_dir))
يموت (دليل upload_files غير موجود وفشل الإنشاء)؛
إذا (!chmod($upload_dir,0755))
يموت (فشل تغيير الإذن إلى 755.) ؛
}
التعامل مع طلبات المستخدم:
إذا ($_REQUEST[del] && $DELETABLE) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\n);
f Close($resource);
if (strpos($_REQUEST[del],/.)>0);
else if (strpos($_REQUEST[del],files/) === false);
وإلا إذا (substr($_REQUEST[del],0,6)==files/) {
إلغاء الارتباط($_REQUEST[del]);
طباعة <script>window.location.href='$url_this?message=تم الحذف بنجاح'</script>;
}
}
وإلا إذا ($_FILES['ملف المستخدم']) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR]
.$_FILES['ملف المستخدم']['الاسم'].
.$_FILES['userfile']['type'].\n);
f Close($resource
$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['userfile']['name'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,.)));
// التحقق من حجم الملف:
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = حجم الملف أكبر من 2 ميجابايت.;
// نوع الملف/فحص الامتداد
وإلا إذا (!in_array($file_type, $FILE_MIMES)
&& !in_array($file_ext, $FILE_EXTS)) )
$message = عذرًا، غير مسموح بتحميل $file_name($file_type).;
آخر
$message = do_upload($upload_dir, $upload_url);
print <script>window.location.href='$url_this?message=$message'</script>;
}
وإلا إذا (!$_FILES['userfile']);
آخر
$message = تم تحديد ملف غير صالح.;
قم بإدراج الملفات التي قمنا بتحميلها:
$handle=opendir($upload_dir);
قائمة الملفات $ = ;
بينما ($file = readdir($handle)) {
إذا(!is_dir($file) && !is_link($file)) {
$filelist .= <a href='$upload_dir$file'>.$file.</a>;
إذا (قابل للحذف)
$filelist .= <a href='?del=$upload_dir$file' title='delete'>x</a>;
$filelist .= <sub><small><small><font color=grey> .date(dm H:i, filemtime($upload_dir.$file))
.</font></small></small></sub>;
قائمة الملفات $ .=<br>;
}
}
function do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_name = str_replace( \\,,$file_name );
$file_name = str_replace(',,$file_name);
$file_path = $upload_dir.$file_name;
// التحقق من اسم الملف
إذا ($file_name ==) {
$message = تم تحديد اسم ملف غير صالح؛
إرجاع رسالة $؛
}
$result = move_uploaded_file($temp_name, $file_path);
إذا (!chmod($file_path,0777))
$message = فشل تغيير الإذن إلى 777.;
آخر
$message = ($result)?$file_name تم تحميله بنجاح:
هناك خطأ ما أثناء تحميل الملف.;
إرجاع رسالة $؛
}
?>
<المركز
>
<لون الخط=أحمر><?=$_REQUEST[رسالة]?></font>
<br>
<اسم النموذج=معرف التحميل=تحميل ENCTYPE=طريقة بيانات متعددة الأجزاء/النموذج=منشور>
تحميل الملف <نوع الإدخال=معرف الملف=اسم ملف المستخدم=ملف المستخدم>
<نوع الإدخال=اسم الإرسال=قيمة التحميل=تحميل>
</نموذج>
<br><b>ملفاتي</b>
<عرض الساعة = 70%>
<?=قائمة الملفات$?>
<عرض الساعة = 70%>
<صغير><سوب>تم التطوير بواسطة
<a style=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a>
</سوب></صغير>
</المركز>