2015-11-23 4 views
3

Я хочу, чтобы загрузить файл изображения с помощьюLaravel 5,1 файл проверки загрузки

{!! Form::open(['url'=>'admins']) !!} 
    {!! Form::input('file','photo',null,['class'=>'photo_input']) !!} 

Кроме того, мои правила валидации

public function rules() 
{ 
    return [ 
     'username'=>'required|max:127|min:3|unique:users,username,'.$this->username, 
     'email'=>'required|max:127|email|min:3|unique:users,email,'.$this->email, 
     'password'=>'required|max:127|min:5|confirmed', 
     'password_confirmation'=>'required|max:127|min:5|', 
     'role'=>'required|max:127|min:5|in:programmer,admin,employee', 
     'photo' => 'mimes:jpg,jpeg,bmp,png,gif' 
    ]; 
} 

Но я получаю сообщение об ошибке

Фотография должна быть файл типа: jpg, jpeg, bmp, png, gif.

Принимая во внимание, что расширение файла, которое я выбираю, является jpg, поэтому что не так?

+0

Где вы получили этот файл изображения? Он должен иметь тип mime jpeg, а не только расширение файла. – Jerodev

+0

Это обычный файл изображения, и я уверен, что это mime-тип jpg, также я пробовал другие изображения, но результат был тот же. –

+0

Не могли бы вы разместить код для всей формы html? Или, по крайней мере, покажите нам, как вы создаете теги 'form'. – Jerodev

ответ

1

Причина в том, что вам нужно определить в вашем form теге атрибут enctype = "multipart/form-data". Таким образом, при использовании Laravel 5.X формы Фасад необходимо передать атрибут files => true в вашем массиве form open вроде как

{!! Form::open(['url'=>'admins','files' => true]) !!} 
           //^^^^^^^^^^^^^^^^ added 

Source Docs

0

Эта проблема также возникает из-за загружаемым большого размера файла, то разрешено в php.ini

Пожалуйста, проверьте

upload_max_filesize

и

post_max_size

в php.ini

Вы также можете проверить размер изображения, расширяя валидатора

In Your Controller 
Validator::extend('img_upload_size', function($attribute, $value, $parameters) 
{ 
$file = Request::file($attribute); 
$image_size = $file->getClientSize(); 
if((isset($parameters[0]) && $parameters[0] != 0) && $image_size > $parameters[0]) return false; 
return true; 
}); 


In Validation Rules 
return [ 
'username'=>'required|max:127|min:3|unique:users,username,'.$this->username, 
    'email'=>'required|max:127|email|min:3|unique:users,email,'.$this->email, 
    'password'=>'required|max:127|min:5|confirmed', 
    'password_confirmation'=>'required|max:127|min:5|', 
    'role'=>'required|max:127|min:5|in:programmer,admin,employee', 
'photo' => 'required|mimes:jpeg,bmp,png|img_upload_size:1000000',//!MB 
] 
+0

Если это так, не вернет ли веб-сервер ошибку? – Jerodev

0

Я зафиксировал его, причина в том, что я не добавил ENCTYPE в форму.

{!! Form::open(['url'=>'admins','enctype'=>'multipart/form-data']) !!} 
+0

Спасибо за все ответы –

+0

Реальная часть для реализации использует '{!! Форма :: open (['url' => 'admins', 'files' => true]) !!} 'вместо' {!! Форма :: open (['url' => 'admins', 'enctype' => 'multipart/form-data']) !!} ' –