2014-10-15 2 views
0

У меня возникли проблемы с каким-то кодом:PHP File Upload (Тип файла) Фильтр

Этот код работает:

if (!($uploadFile_type == "image/gif")) { 
    echo "Sorry, only GIF files are allowed."; 
    $uploadOk = 0; 
} 

Теперь я хочу сделать кратные, так что я пытаюсь это:

if (($uploadFile_type != "image/gif") || ($uploadFile_type != "image/jpg") || ($uploadfile_type != "image/png")) { 
    echo "Sorry, only GIF/JPG or PNG files are allowed."; 
} 

Проблема в том, что всякий раз, когда я загружаю файлы .jpg, я получаю «Извините, разрешены только файлы GIF/JPG или PNG».

Есть что-то неправильно с кодом выше?

ответ

1

Проблема в том, ваше состояние:

if x or y оценивается как верно, если один из x или y верно. В вашем примере jpg точно не равен png, почему он всегда будет оценивать true.

как он получает оценку:

if(("image/jpeg" != "image/gif") || ("image/jpeg" != "image/jpeg") || ("image/jpeg" != "image/png")) 

, который дает:

if(true || false || true) 

который:

if(true) 

вместо изменить его на:

if (!($uploadFile_type == "image/gif" || $uploadFile_type == "image/jpeg" || $uploadfile_type == "image/png")) 
-1

у меня есть одни и те же вопросы, и я стараюсь с этим кодом и он работает в настоящее время

if ($uploadFile_type != "image/gif") { 
      if($uploadFile_type != "image/jpg") { 
       if($uploadfile_type != "image/png"){ 

        echo "Sorry, only GIF/JPG or PNG files are allowed."; 
       } 
      } 
      } 
2

Попробуйте это ..

$array = array('image/gif','image/jpg','image/png'); 
if(!in_array($uploadFile_type,$array)){ 
    echo "Sorry, only GIF/JPG or PNG files are allowed."; 
} 
0

Попробуйте

<?php 
if(isset($_FILES['image'])) 
{ 
    $errors= array(); 
    $file_name = $_FILES['image']['name']; 
    $file_size =$_FILES['image']['size']; 
    $file_tmp =$_FILES['image']['tmp_name']; 
    $file_type=$_FILES['image']['type']; 
    $value = explode(".", $file_name); 
    $file_ext = strtolower(array_pop($value)); 
    $expensions= array("jpeg","jpg","png","gif"); 
    if(in_array($file_ext,$expensions)== false) 
    { 
     $errors="Extension not allowed, please choose a JPEG or PNG file."; 
    } 
    if($file_size > 2097152) 
    { 
     $errors[]='File size must be excately 2 MB'; 
    }  
    if(empty($errors)==true) 
    { 
     move_uploaded_file($file_tmp,"upload/".$file_name); 
     echo "Success"; 
    }else 
    { 
     print_r($errors); 
    } 
} 
?> 
0

Это позволит только тип файла image/png, image/jpg and image/png

$uploadFile_type = "image/png"; 

if ($uploadFile_type != "image/gif" and $uploadFile_type != "image/jpg" and $uploadFile_type != "image/png") { 
echo "Sorry, only GIF/JPG or PNG files are allowed."; 
} 

опечатка также в вашем коде: $uploadfile_type != "image/png")

Ее на самом деле:

$uploadFile_type != "image/png" 

Sandbox

2

Почему бы не сделать массив допустимых значений, например,

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

, а затем проверить ваши тип загрузки файла в этом массиве.

if (!in_array($uploadFile_type, $valid_image_types)) { 
    echo "Sorry, only GIF/JPG or PNG files are allowed."; 
}