Laravel 表单验证:限制上传图片宽度和高度 1 个改进

问题

我们怎样限制上传图片宽度和高度?

答案

假如验证字段为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),
    ],
]);
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!