@Iossarian

Как правильно сформировать условие?

Нужно сформировать правильно сформировать условие, чтобы если массив $_FILES был не пуст и загружаемый файл был корректен, то выполнялось условие из блока elseif. Иначе - файл не выбран. Не пойму логической ошибки. if и else срабатывают, но elseif - нет. Спасибо.

if (!empty($_FILES['image']['name'])) {
        $tmp_name = $_FILES['image']['tmp_name'];
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $file_type = finfo_file($finfo, $tmp_name);
        if ($file_type !== "image/jpeg") {
            $valid_errors['image'] = 'Загрузите картинку в формате JPEG';
        }
    } elseif (!empty($_FILES['image']['name'])) {
        $tmp_name = $_FILES['image']['tmp_name'];
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $file_type = finfo_file($finfo, $tmp_name);
        $filename = 'img' . DIRECTORY_SEPARATOR . uniqid() . '.jpg';
        $lot['image'] = $filename;
        move_uploaded_file($_FILES['image']['tmp_name'], __DIR__ . DIRECTORY_SEPARATOR . $filename);
    } else  {
        $valid_errors['image'] = 'Вы не загрузили файл';
    }
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
ubukulov
@ubukulov
Веб-разработчик
if (!empty($_FILES['image']['name'])) {  // вам не кажется что тут и в блоке elseif условие одинакого, соответственно
                                                             // первый блок сработывает, и не заходить второй блок    
        $tmp_name = $_FILES['image']['tmp_name'];
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $file_type = finfo_file($finfo, $tmp_name);
        if ($file_type !== "image/jpeg") {
            $valid_errors['image'] = 'Загрузите картинку в формате JPEG';
        }
    } elseif (!empty($_FILES['image']['name'])) {
        $tmp_name = $_FILES['image']['tmp_name'];
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $file_type = finfo_file($finfo, $tmp_name);
        $filename = 'img' . DIRECTORY_SEPARATOR . uniqid() . '.jpg';
        $lot['image'] = $filename;
        move_uploaded_file($_FILES['image']['tmp_name'], __DIR__ . DIRECTORY_SEPARATOR . $filename);
    } else  {
        $valid_errors['image'] = 'Вы не загрузили файл';
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы