Как ограничить размер файла типа загрузки файла в PHP?

У меня есть форма для загрузки, и я проверяю размер и тип файла, чтобы ограничить загружаемый файл до 2 мегабайт и файлов .pdf, .jpg, .gif или .png. типы. Моя цель - показать пользователю предупреждающее сообщение, если он нарушит одно из этих правил.

Существует четыре сценария:

  1. Правильный размер / Правильный тип (рабочий)
  2. Правильный размер / НЕПРАВИЛЬНЫЙ тип (рабочий)
  3. НЕПРАВИЛЬНЫЙ размер / правильный тип ( не работает )
  4. НЕПРАВИЛЬНЫЙ размер / НЕПРАВИЛЬНЫЙ тип ( не работает )

С моим текущим кодом он всегда отображает неверное сообщение «тип», когда размер файла превышает 2 мегабайта (# 4), даже если тип файла правильный (№3).

Есть идеи, почему?

if (isset ( $_FILES['uploaded_file'] ) ) {

    $file_size = $_FILES['uploaded_file']['size'];
    $file_type = $_FILES['uploaded_file']['type'];

    if (($file_size > 2097152)){      
        $message = 'File too large. File must be less than 2 megabytes.'; 
        echo '<script type="text/javascript">alert("'.$message.'");</script>'; 
    }
    elseif (  
        ($file_type != "application/pdf") &&
        ($file_type != "image/jpeg") &&
        ($file_type != "image/jpg") &&
        ($file_type != "image/gif") &&
        ($file_type != "image/png")    
    ){
        $message = 'Invalid file type. Only PDF, JPG, GIF and PNG types are accepted.'; 
        echo '<script type="text/javascript">alert("'.$message.'");</script>';         
    }    
    else {
        store_uploaded_file($id);
    }

}   
21
задан Michael 5 February 2012 в 21:47
поделиться