Laravel 5.4:如何验证图像大小?
Posted
技术标签:
【中文标题】Laravel 5.4:如何验证图像大小?【英文标题】:Laravel 5.4: How do I validate an image size? 【发布时间】: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”字段是文件输入吗?
您是否在验证到达之前保存了文件?
【参考方案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)
【讨论】:
以上是关于Laravel 5.4:如何验证图像大小?的主要内容,如果未能解决你的问题,请参考以下文章