【问题标题】:Laravel 5.4: How do I validate an image size?Laravel 5.4:如何验证图像大小?
【发布时间】:2018-12-22 09:05:06
【问题描述】:

我有一个用户可以提交图像的表单。我不想将它存储在我的服务器上以防它是病毒,而是将它存储到 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。 什么是验证的正确方法或无需保存文件的替代解决方案?

【问题讨论】:

  • 你确定你的表单是method=POST并且有enctype="multipart/form-data"属性,并且“logo”字段是文件输入吗?
  • 您是否在验证到达之前保存了文件?

标签: php laravel validation laravel-5.4


【解决方案1】:

max_width & max_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())

【讨论】:

  • 感谢它缺少 enctype。冒号实际上仍然有效。
【解决方案2】:

这是一个验证示例:

  • 图像格式
  • 最大文件大小
  • 尺寸
$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)

【讨论】:

    猜你喜欢
    • 2014-09-16
    • 2018-11-08
    • 2014-01-09
    • 1970-01-01
    • 2017-07-20
    • 2015-06-11
    • 2017-12-17
    • 2017-10-19
    • 2017-09-09
    相关资源
    最近更新 更多