Проверка файлов .txt с помощью getimagesize()

344
13 февраля 2017, 17:16

Проверяю загружаемые пользователями thumb картинки с помощью getimagesize() Вот таким образом:

$imageinfo = getimagesize($file['tmp_name']);
  if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/png') {
    $data['error'] = 'Ошибка загрузки. Допустимые форматы: .jpeg .gif .png';
    echo json_encode( $data );
    exit;
  } else {
    list($width, $height) = getimagesize($file['tmp_name']);
    if ($width < $minWidth || $height < $minHeight || $height > $maxHeight || $width > $maxWidth){
      $data['error'] = 'Изображение не может быть меньше '.$minWidth.' и больше '.$maxWidth.' пикселей <br>
      по одной из сторон. Пожалуйста выберите другое фото.';
      echo json_encode( $data );
      exit;
    }
  }

То есть проверка на mime типы. Всё работает превосходно с разными форматами, но при загрузке пользователями файла .txt вместо изображений сервер выдает 500 (Internal Server Error) со словами LOG.error: exception 'ErrorException' with message 'getimagesize(): Read error!

Пытался сделать так:

try {getimagesize($file['tmp_name']);}
    catch (Exception $e) {
    }
    if ($e === FALSE) {
//ERROR
    }

Не помогло. Как нужно сделать, что бы при ошибке выполнения getimagesize() была не 500 ошибка, а ответ в виде echo json_encode( $error ); ?

Answer 1

Попробуйте использовать оператор @ :

if ($imageinfo  = @getimagesize($file['tmp_name'])) {
    //...ваш код
} else {
    //выводим json с ошибкой
}
READ ALSO
$_SERVER[&#39;QUERY_STRING&#39;]

$_SERVER['QUERY_STRING']

Подскажите если сделать запрос например indexphp?root файл index

254
Как добавить значение переменной в (mkdir)

Как добавить значение переменной в (mkdir)

Как добавить значение переменной $sot в mkdir

246
Laravel – перебор внутри контроллера с привязкой к модели

Laravel – перебор внутри контроллера с привязкой к модели

Пытаюсь вывести информацию из базы данных и привязать к ней изображения – хочу следовать шаблону mvc

319
Как изменить редирект при авторизации в Laravel 5.4

Как изменить редирект при авторизации в Laravel 5.4

Использую встроенную авторизацию LaravelСвойство protected $redirectTo = '/'; везде заменено и при входе/регистрации всё работает как надо

452