Laravel 5.4: 如何验证图像大小?

Laravel 5.4: How do I validate an image size?

我有一个用户可以提交图片的表单。我不想将它存储在我的服务器上以防它是病毒,而是将它存储到 Amazon S3。

我的问题是我需要验证图像是否小于特定尺寸。 我怎样才能在 Laravel 5.4 中做到这一点?

我的控制器

 $validator = \Validator::make($request->all(),[
    "logo"      => "dimensions:max_width:300,max_height:200",
 ]);

 if($validator->fails()){
    return \Redirect::back()->withInput()->withErrors( $validator );
 }

虽然我上传的图片是 100x100,但验证失败并以 "The logo has invalid image dimensions." 重定向回来。 无需保存文件的正确验证方法是什么或替代解决方案是什么?

max_widthmax_height 中使用等号 (=) 而不是冒号 (:):

"logo"  => "dimensions:max_width=300,max_height=200",

Image dimension validation rules in Laravel


如果没有解决,请确保您的表单具有 enctype="multipart/form-data"(如 @F.Igor 评论中所述):

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="logo">
    <input type="submit">
</form>

如果您已经在使用它,请检查(在验证之前)您是否正在根据您的请求获取图像以及使用什么名称:

dd($request->all())

这是一个验证示例:

  • 图片格式
  • 最大文件大小
  • 维度
$request->validate([
     'avatar' => ['image','mimes:jpg,png,jpeg,gif','max:200','dimensions:min_width=100,min_height=100,max_width500,max_height=500'],
]);

max:200(最大大小限制为 200kb)