تحميل ملف PHP
بواسطة PHP، يمكنك تحميل الملفات إلى الخادم.
الأمثلة في هذا الباب في إطار مشروع اختبار كاملة، وبنية الدليل:
test |-----upload # 文件上传的目录 |-----form.html # 表单文件 |-----upload_file.php # php 上传代码
إنشاء نموذج إيداع ملف
يسمح للمستخدمين بتحميل الملفات من شكل مفيد.
النظر في شكل HTML التالية لتحميل الملفات:
<html> <head> <meta charset="utf-8"> <title>本教程(w3big.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 أعلاه:
- <شكل> تحدد السمة العلامة enctypeمحتوى عند تقديم استمارة لاستخدام أي نوع. عندما يتطلب شكل البيانات الثنائية، مثل محتوى الملف، واستخدام"متعدد الأجزاء / شكل بيانات".
- <إدخال> تحدد سمة نوع = "ملف"سمة ينبغي أن يعامل مدخلات كملفات. على سبيل المثال، عند معاينة في المتصفح، وسوف ترى بجانب مربع الإدخال يحتوي على زر استعراض.
ملاحظة: السماح للمستخدمين بتحميل الملفات يشكل خطرا أمنيا كبيرا.يرجى يسمح فقط للمستخدمين الموثوق بهم أداء تحميل الملف.
إنشاء النصي تحميل
"Upload_file.php" الملف يحتوي على كود لتحميل الملفات:
<?php if ($_FILES["file"]["error"] > 0) { echo "错误:" . $_FILES["file"]["error"] . "<br>"; } else { echo "上传文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件类型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"]; } ?>
باستخدام PHP المصفوفات العالمية $ _files، يمكنك تحميل الملفات إلى ملقم بعيد من الكمبيوتر العميل.
المعلمة الأولى هو اسم مدخلات النموذج، يمكن منخفض الثاني أن يكون "اسم"، "اكتب"، "حجم"، "tmp_name" أو "خطأ". على النحو التالي:
- $ _files [ "ملف"] [ "اسم"] - اسم الملف الذي تم تحميله
- $ _files [ "ملف"] [ "نوع"] - أنواع الملفات تحميل
- $ _files [ "ملف"] [ "حجم"] - حجم ملف التحميل في بايت
- $ _files [ "ملف"] [ "tmp_name"] - يتم تخزين نسخة مؤقتة في اسم الخادم الملف
- $ _files [ "ملف"] [ "خطأ"] - رمز الخطأ الناتج عن تحميل الملف
هذا هو تحميل الملف بسيطة جدا. واستنادا إلى اعتبارات أمنية، يجب زيادة القيود التي يسمح للمستخدمين بتحميل الملفات.
حد التحميل
في هذا السيناريو، واضاف لدينا إلى حد إيداع الملف. يمكن للمستخدمين تحميل فقط. GIF و jpeg، jpg و بابوا نيو غينيا الملف، يجب أن يكون حجم ملف أقل من 200 كيلو بايت:
<?php // 允许上传的图片后缀 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); // 获取文件后缀名 if ((($_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 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "错误:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "上传文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件类型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"]; } } else { echo "非法的文件格式"; } ?>
حفظ الملف وسيتم تحميلها
المثال أعلاه هو إنشاء نسخة مؤقتة من الملف الذي تم تحميله في مجلد PHP خادم الملفات المؤقتة.
فإن نسخة مؤقتة من الملف تختفي في نهاية البرنامج النصي. حفظ ملف يتم تحميله، ونحن بحاجة إلى نسخها إلى موقع آخر:
<?php // 允许上传的图片后缀 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); echo $_FILES["file"]["size"]; $extension = end($temp); // 获取文件后缀名 if ((($_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 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "错误:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "上传文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件类型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<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 "非法的文件格式"; } ?>
البرنامج النصي أعلاه بالكشف عن ما إذا كان الملف موجود بالفعل، إن لم يكن، وطرح يتم نسخ الملفات إلى دليل يسمى "تحميل" ل.
تجريبي عملية إيداع الملف على النحو التالي: