Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 28.12.2014 16:46:38

Александр

Валидация картинок / изображений в Laravel 4 пропускает .exe файлы

Уважаемые Laravel'чане, доброе время суток! Мне нужна Ваша помощь.

Я принимаю данные от пользователя, в том числе avatar ( картинку ), соответственно в $rules я создал правило для валидации изображений:

$rules = [

    "avatar"    =>    "image"

    // какие-то ещё правила 

]

   ...

Валидатор ругается, если пользователь загрузил НЕ картинку, например архив или текстовый файл. Если всё ОК, создается папка в которую помещается изображение и выводится сообщение "Вы успешно обновили аватар". С задаче валидатор справился.

Но, если вместо картинки отправить .exe файл, то валидатор НЕ ругается и программа выводит сообщение "Вы успешно обновили аватар". Проверяю папку, вдруг туда поместился данные .exe файл и ууух, слава богам туда ничего не прилетело.

В любом случае это очень волнует. Почему на остальные файлы правило "avatar"    =>    "image" идеально срабатывает, а для .exe нет? Кто нибудь сталкивался с этим? Просто я ОЧЕНЬ хотел бы использовать то, что дает Laravel. Здесь я думал все будет просто ведь всё как бы очевидно, "avatar"    =>    "image" значит нас интересуют только изображения. Неужели придется прибегать все же к созданию собственного правила для валидации? Боюсь не справлюсь с этим ...

Благодарю тех, кто сможет помочь!

#2 29.12.2014 15:11:40

Re: Валидация картинок / изображений в Laravel 4 пропускает .exe файлы

Ограничьте ввод ещё и указанием mime-типов:

'avatar' => 'mimes:jpeg,bmp,png'

Не в сети

#3 29.12.2014 16:26:20

Re: Валидация картинок / изображений в Laravel 4 пропускает .exe файлы

Я забыл про это написать. Да, именно так я и пробовал тоже, но все по прежнему. Какие могут быть еще варианты? Почему с .exe немного иначе ситуация обстоит? Почему на .exe не ругается валидатор ...

Не в сети

#4 29.12.2014 18:58:50

Wide

Re: Валидация картинок / изображений в Laravel 4 пропускает .exe файлы

Я думаю проблема конкретно в вашей реализации. Если делали кастомные ошибки, возможно что-то не туда вписано.

На все не картинки дефолтная ошибка "The image must be an image".

Route::post('upload', function()
{
    $image = Input::file('image');
    
    $validator = Validator::make(['image' => $image], ['image' => 'image']);
    
    if ( $validator->fails() )
    {
        return Response::make($validator->messages()->first());
    }
    
    $upload = $image->move(public_path().'/uploads', $image->getClientOriginalName());
    
    if( $upload )
    {
        return Response::make('success');
    }
    
    return Response::make('error'); 
});

#5 30.12.2014 06:21:57

Re: Валидация картинок / изображений в Laravel 4 пропускает .exe файлы

Wide пишет:

Я думаю проблема конкретно в вашей реализации. Если делали кастомные ошибки, возможно что-то не туда вписано.

На все не картинки дефолтная ошибка "The image must be an image".

Route::post('upload', function()
{
    $image = Input::file('image');
    
    $validator = Validator::make(['image' => $image], ['image' => 'image']);
    
    if ( $validator->fails() )
    {
        return Response::make($validator->messages()->first());
    }
    
    $upload = $image->move(public_path().'/uploads', $image->getClientOriginalName());
    
    if( $upload )
    {
        return Response::make('success');
    }
    
    return Response::make('error'); 
});

Огромное Вам спасибо !!! Моя проблема решена! Я когда-то нуждался в выводе всех ошибок, которые были найдены валидатором, мне нужно было их выводить все. И я написал простую функцию, внутри которой я пользовался валидатором и возвращал массива в ошибками. Ровно до этого момента все выводилось здорово. Дошел до работы с изображениями и вот ... В общем теперь не буду писать велосипеды. Спасибо Вам, я очень рад ) Это мне урок.

Не в сети

Подвал раздела