если заявление о подтверждении загрузки файла, но ошибка по-прежнему отображается? - PullRequest
0 голосов
/ 29 марта 2012

У меня есть оператор проверки PHP для загрузки файла в форме HTML.Имеются ошибки, которые выводятся на печать, если файл не является изображением или расширение файла не поддерживается.Оператор if указывает, что если $_FILES пуст, чтобы проверить его, и отображает соответствующие ошибки.Проблема в том, что, хотя загрузка файла не является обязательным вводом, появляется сообщение об ошибке «файл не является изображением», даже если переменная $_FILES пуста?Может кто-нибудь, пожалуйста, помогите

error_reporting (E_ALL ^ E_NOTICE);

if($_FILES != "") // [START FILE UPLOADED]
{
    include 'image_validate.php';

    $file = $_FILES['eventPhoto'];

    $file_name = $file['name'];

    $error = ''; // Empty

    // Get File Extension (if any)
    $ext = strtolower(substr(strrchr($file_name, "."), 1));

    // Check for a correct extension. The image file hasn't an extension? Add one
    if($validation_type == 1)
    {
        $file_info = getimagesize($_FILES['eventPhoto']['tmp_name']);

        if(empty($file_info)) // No Image?
        {
            $error .= "<br/><div class='submitEventErrors'>The uploaded file doesn't seem to be an image.</div><br/>";
        }
        else // An Image?
        {
            $file_mime = $file_info['mime'];

            if($ext == 'jpc' || $ext == 'jpx' || $ext == 'jb2')
            {
                $extension = $ext;
            }
            else
            {
                $extension = ($mime[$file_mime] == 'jpeg') ? 'jpg' : $mime[$file_mime];
            }

            if(!$extension)
            {
                $extension = '';
                $file_name = str_replace('.', '', $file_name);
            }
        }
    }

    else if($validation_type == 2)
    {
        if(!in_array($ext, $image_extensions_allowed))
        {
            $exts = implode(', ',$image_extensions_allowed);
            $error .= "<br/><div class='submitEventErrors'>You must upload a file with one of the following extensions: ".$exts."</div>";
        }

        $extension = $ext;
    }

    if($error)
    {
        echo '<font color="red">'.$error.'</font>';
    }

    if($error == "") // No errors were found?
    {
        $new_file_name = strtolower($file_name);
        $new_file_name = str_replace(' ', '-', $new_file_name);
        $new_file_name = substr($new_file_name, 0, -strlen($ext));
        $new_file_name .= $extension;

    }
    else
    {
        @unlink($file['tmp_name']);
    }

} // [END FILE UPLOADED]

1 Ответ

1 голос
/ 29 марта 2012

Попробуйте использовать is_uploaded_file вместо if ($ _ FILES! = "")

Подробнее здесь http://php.net/manual/en/function.is-uploaded-file.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...