[英]Laravel 5.1 file upload validation
我想使用上傳圖像文件
{!! 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,那有什么不對?
背后的原因是您需要在form
標記中定義屬性enctype = "multipart/form-data"
。 因此,盡管使用Laravel 5.X形式門面,你需要通過屬性files => true
您的陣列中的form open
等作為
{!! Form::open(['url'=>'admins','files' => true]) !!}
//^^^^^^^^^^^^^^^^ added
此問題也是由於上傳大文件大小然后在php.ini中允許的
請檢查
的upload_max_filesize
和
的post_max_size
在php.ini中
您還可以通過擴展Validator來驗證圖像大小
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
]
我修復了它,原因是我沒有在表單中添加enctype。
{!! Form::open(['url'=>'admins','enctype'=>'multipart/form-data']) !!}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.