Laravel 5.3 新特性系列 —— 新增上传图片尺寸验证规则

laravel-5-3-new-features-updates

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'
    ]);
}

声明:本文整理翻译自https://mattstauffer.co/blog/image-dimension-validation-rules-in-laravel-5-3

学院君

学院君 has written 554 articles

资深PHP工程师,Laravel学院院长