Laravel 表单验证:限制上传图片宽度和高度
问题
我们怎样限制上传图片宽度和高度?
答案
假如验证字段为avatar
,那么我们可以使用 Laravel 中内置的 dimensions
验证规则进行处理:
$result = request()->validate([
'avatar' => 'dimensions:min_width=100,min_height=200'
]);
上面的验证规则表示图片最小宽度为100像素,最小高度为200像素。
dimensions
的验证规则包含 min_width、 max_width、 min_height、 max_height、 width、 height、 ratio。
比例应该使用宽度除以高度的方式来约束。这样可以通过 3/2 这样的语句或像 1.5 这样的浮点的约束:
'avatar' => 'dimensions:ratio=3/2'
由于此规则需要多个参数,因此你可以 Rule::dimensions
方法来构造可读性高的规则:
use Illuminate\Validation\Rule;
Validator::make($data, [
'avatar' => [
'required',
Rule::dimensions()->maxWidth(1000)->maxHeight(500)->ratio(3 / 2),
],
]);