在 Laravel 5.3 中,新增了一个表单验证选项:上传图片的图片尺寸,该验证规则名称为 dimensions ,你可以传递如下参数到验证规则:
min_width:宽度比这个尺寸窄的图片将会被拒绝
max_width:宽度比这个尺寸宽的图片将会被拒绝
min_height:高度比这个尺寸矮的图片将会被拒绝
max_height:高度比这个尺寸高的图片将会被拒绝
width:宽度不等于这个尺寸的图片将会被拒绝
height:高度不等于这个尺寸的图片将会被拒绝
ratio:宽高比不等于这个值的图片将会被拒绝
你也可以组合使用这些规则,下面让我们来看一些示例。
定义一个简单的路由规则:
// routes file
Route::get('/', function () {
return view('form');
});
Route::post('/', 'ImageController@postImage');
对应视图文件如下:
<!--form.blade.php-->
<form method="POST" enctype="multipart/form-data">
<input type="file" name="avatar">
<input type="submit">
</form>
最后,让我们来编写控制器 ImageController ,并实现验证规则代码:
/**
* 图片验证规则代码
* Author:学院君@LaravelAcademy.org
*/
// ImageController
public function postImage(Request $request)
{
$this->validate($request, [
'avatar' => 'dimensions:min_width=250,min_height=500'
]);
// 或者 ...
$this->validate($request, [
'avatar' => 'dimensions:min_width=500,max_width=1500'
]);
// 或者 ...
$this->validate($request, [
'avatar' => 'dimensions:width=100,height=100'
]);
// 或者...
// 确保图片宽度是高度的1.5倍
$this->validate($request, [
'avatar' => 'dimensions:ratio:3/2'
]);
}