• 0

كيف أسمح برفع نوع معين من الملفات فقط باستخدام php؟

أريد منع رفع الملفات إلى خادمي إلا أنواع محددة مثل jpg، فهل توجد طريقة باستخدام لغة php لفعل ذلك؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

توجد عدة طرق لفعل ذلك، أسهلها وضع الإمتدادات المسموح بها في مصفوفة ومن ثم استخدام in_array() كما في المثال التالي:

$file_type = $_FILES['foreign_character_upload']['type']; //returns the mimetype

$allowed = array("image/jpeg", "image/gif", "application/pdf");
if(!in_array($file_type, $allowed)) {
  $error_message = 'Only jpg, gif, and pdf files are allowed.';
  $error = 'yes';
}

إذا أردت مثال كامل لرفع ملفات محددة فإليك هذا السكربت البسيط. فلو فرضنا أنك استدعيت شيفرة رفع الملف عن طريق كود HTML التالي:

<form enctype="multipart/form-data" action="upload.php" method="POST">
Please choose a file: <input name="uploaded" type="file" /><br />
<input type="submit" value="Upload" />
</form>

فإن محتويات ملف upload.php ستكون كالتالي:

<?php
$target = "images/";
$target = $target . basename( $_FILES['uploaded']['name']) ;
$ok=1;

//This is our size condition
if ($uploaded_size > 2097152){
echo "Your file is too large. We have a 2MB limit.<br>";
$ok=0;
}

$types = array('image/jpeg', 'image/gif', 'image/png');

if (in_array($_FILES['uploaded']['type'], $types)) {
// file is okay continue
} else {
$ok=0;
} 

//Here we check that $ok was not set to 0 by an error
if ($ok==0){
Echo "Sorry your file was not uploaded. It may be the wrong filetype. We only allow JPG, GIF, and PNG filetypes.";
}

//If everything is ok we try to upload it
else{
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)){
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
}
else{
echo "Sorry, there was a problem uploading your file.";
}
}
?>

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

توفر لغة html هذه الامكانية عن طريق توفر الوسم input على خاصية accept والتي تتيح للمبرمج إدراج نوع الملف المسموح بتحميله إلى الخادم، أي أن التحقق يتم عبر جهاز المستخدم نفسه، وهذا مثال لذلك:

 <form action="demo_form.asp">
  <input type="file" name="pic" accept="image/*">
  <input type="submit">
</form> 

بالنسبة للعديد من الامتدادات:

<input type="file" accept=".xls,.xlsx" />

على لغة Php سنستعمل أنواع  MIME  من خلال وظيفة تتضمن أنواع الملفات التي سيُسمح بتحميلها على الخادم.

إليك المثال:

function allowed_file(){

//اضافة الملفات التي يسمح بتحميلها داخل المصفوفة التالية 
 $allowed = array('application/doc', 'application/pdf', 'another/type');

//التأكد من وجود النوع المراد تحميله داخل المصفوفة السابقة 
    if(in_array($_FILES['resume']['type'], $allowed) AND in_array($_FILES['reference']['type'], $allowed)){

   //نكمل عملية التحقق عن طريق قياس حجم الملف، هنايسمح فقط بتحميل أقل من 40000

  if($_FILES["resume"]["size"] < 400000 AND $_FILES["reference"]["size"] < 400000 ){

    //تحميل الملف يعد التحقق من الشروط السابقة
    //Begin filemove here....

    }

    }
}

كإضافة: يمكن التحقق من امتداد الملف المراد تحميله إلى الخادم عن طﻻيف javascript وأظنها أكثر الطرق استعمالًا:

كود javascript:

var _validFileExtensions = [".jpg", ".jpeg", ".bmp", ".gif", ".png"];    
function Validate(oForm) {
    var arrInputs = oForm.getElementsByTagName("input");
    for (var i = 0; i < arrInputs.length; i++) {
        var oInput = arrInputs[i];
        if (oInput.type == "file") {
            var sFileName = oInput.value;
            if (sFileName.length > 0) {
                var blnValid = false;
                for (var j = 0; j < _validFileExtensions.length; j++) {
                    var sCurExtension = _validFileExtensions[j];
                    if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) {
                        blnValid = true;
                        break;
                    }
                }
                
                if (!blnValid) {
                    alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", "));
                    return false;
                }
            }
        }
    }
  
    return true;
}

كود Html المتوفر على الحقول:

<form onsubmit="return Validate(this);">
  File: <input type="file" name="my file" /><br />
  <input type="submit" value="Submit" />
</form>

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن