2015-11-20 46 views
0

我有3个文件输入,我一直试图保证,但我没有成功。 我需要这些文件输入只需要jpeg,jpg,png,gif。我知道这个mime类型使用起来并不可靠,所以我想不再使用它。如果有更清洁或更快的方式来做到这一点,PHP程序的方式IF语句,会更好。如何在PHP中允许某些扩展类型?

HTML代码

<input type="file" name="index_desl_Cfile1" class="upload-image" /> 
<input type="file" name="index_desl_Cfile2" class="upload-image" /> 
<input type="file" name="index_desl_Cfile3" class="upload-image" /> 

PHP代码

$target_dir = "../site_images/"; 

$index_deslC1 = $target_dir . basename($_FILES["index_desl_Cfile1"]["name"]); 
$index_deslC2 = $target_dir . basename($_FILES["index_desl_Cfile2"]["name"]); 
$index_deslC3 = $target_dir . basename($_FILES["index_desl_Cfile3"]["name"]); 

// Check if file already exists 
$src1 = 'http://localhost//397/admin/site_images/'.$index_deslC1; 
$src2 = 'http://localhost/397/admin/site_images/'.$index_deslC2; 
$src3 = 'http://localhost/397/admin/site_images/'.$index_deslC3;  
if (@getimagesize($src1)) { 
    echo "Sorry, file already exists 1. "; 
    $uploadOk = 0; 

} 
else if (@getimagesize($src2)) { 
    echo "Sorry, file already exists 2. "; 
    $uploadOk = 0; 
} 
else if (@getimagesize($src3)) { 
    echo "Sorry, file already exists 3. "; 
    $uploadOk = 0; 
} 

    $imageFileTypeC1 = $_FILES["index_desl_Cfile1"]["type"]; 
    $imageFileTypeC2 = $_FILES["index_desl_Cfile2"]["type"]; 
    $imageFileTypeC3 = $_FILES["index_desl_Cfile3"]["type"]; 

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

    if (!in_array($imageFileTypeC1, $allowed_types)) { 

      echo "ILLEGAL FILE TYPE 1"; 
      $uploadOk = 0; 

     } 
    else if (!in_array($imageFileTypeC2, $allowed_types)) { 

      echo "ILLEGAL FILE TYPE 2"; 
      $uploadOk = 0; 

     } 
    else if (!in_array($imageFileTypeC3, $allowed_types)) { 

      echo "ILLEGAL FILE TYPE 3"; 
      $uploadOk = 0; 

     }   
     else { 
      $uploadOk = 1; 
     } 
    if ($uploadOk == 0) { 
     echo " Sorry, your file was not uploaded."; 
    // if everything is ok, try to upload file 
    } else { 
     if (move_uploaded_file($_FILES["index_desl_Cfile1"]["tmp_name"], $index_deslC1)) { 
      echo "The file ". basename($_FILES["index_desl_Cfile1"]["name"]). " has been uploaded."; 
     } 
    else if (move_uploaded_file($_FILES["index_desl_Cfile2"]["tmp_name"], $index_deslC2)) { 
      echo "The file ". basename($_FILES["index_desl_Cfile2"]["name"]). " has been uploaded."; 
     } 
    else if (move_uploaded_file($_FILES["index_desl_Cfile3"]["tmp_name"], $index_deslC3)) { 
      echo "The file ". basename($_FILES["index_desl_Cfile3"]["name"]). " has been uploaded."; 
     } 

这将有3个以上的文件输入。

+0

你说上面的不工作? – 2015-11-20 03:10:59

+0

它可能看起来像它,但它不起作用。这是我得到的错误 - ILLEGAL FILE TYPE 2抱歉,您的文件没有上传。 – jQueryster

+0

'print_r($ _ FILES)是什么?''它会一直是3吗? – 2015-11-20 03:15:16

回答

0

我终于明白了。我使用开关语句而不是使用if语句,我检查文件类型,它的工作方式就像一个魅力!

这里是所有的代码...

$target_dir = "../site_images/"; 

$index_deslC1 = $target_dir . basename($_FILES["index_desl_Cfile1"]["name"]); 
$index_deslC2 = $target_dir . basename($_FILES["index_desl_Cfile2"]["name"]); 
$index_deslC3 = $target_dir . basename($_FILES["index_desl_Cfile3"]["name"]); 

// Check if file already exists 
$src1 = 'http://localhost//397/admin/site_images/'.$index_deslC1; 
$src2 = 'http://localhost/397/admin/site_images/'.$index_deslC2; 
$src3 = 'http://localhost/397/admin/site_images/'.$index_deslC3;  
if (@getimagesize($src1)) { 
echo "Sorry, file already exists 1. "; 
$uploadOk = 0; 

} 
else if (@getimagesize($src2)) { 
echo "Sorry, file already exists 2. "; 
$uploadOk = 0; 
} 
else if (@getimagesize($src3)) { 
echo "Sorry, file already exists 3. "; 
$uploadOk = 0; 
} 

$imageFileTypeC1 = $_FILES["index_desl_Cfile1"]["type"]; 
$imageFileTypeC2 = $_FILES["index_desl_Cfile2"]["type"]; 
$imageFileTypeC3 = $_FILES["index_desl_Cfile3"]["type"]; 

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

switch ($allowed_types) { 
    case in_array($imageFileTypeC1, $allowed_types): 
     echo "GOOD 1!"; 
     $uploadOk = 1; 
    break; 
    case in_array($imageFileTypeC2, $allowed_types): 
     echo "GOOD 2!"; 
     $uploadOk = 1; 
    break; 
    default: 
     echo "ILLEGAL FILE TYPE"; 
     $uploadOk = 0; 
} 

if ($uploadOk == 0) { 
    echo " Sorry, your file was not uploaded."; 
// if everything is ok, try to upload file 
} else { 
    if (move_uploaded_file($_FILES["index_desl_Cfile1"]["tmp_name"], $index_deslC1)) { 
     echo "The file ". basename($_FILES["index_desl_Cfile1"]["name"]). " has been uploaded."; 
    } 
else if (move_uploaded_file($_FILES["index_desl_Cfile2"]["tmp_name"], $index_deslC2)) { 
     echo "The file ". basename($_FILES["index_desl_Cfile2"]["name"]). " has been uploaded."; 
    } 
else if (move_uploaded_file($_FILES["index_desl_Cfile3"]["tmp_name"], $index_deslC3)) { 
     echo "The file ". basename($_FILES["index_desl_Cfile3"]["name"]). " has been uploaded."; 
    }