【问题标题】:Backpack CRUD: How do I validate dimensions of an image uploaded with elFinder?Backpack CRUD:如何验证使用 elFinder 上传的图像的尺寸?
【发布时间】:2017-08-11 21:04:06
【问题描述】:

我无法在 Backpack for laravel 中验证图像尺寸。

在我的 Backpack CRUD 中,我正在添加一个使用 elFinder 上传照片的字段,如下所示:

$addFields = [
    [
        'name' => 'photo',
        'label' => 'Header Photo (1500 x 1000 EXACTLY)',
        'type' => 'browse'
    ]
]

在我的请求中,我使用以下规则来验证图像的大小:

public function rules()
{

    return [
        'photo' => 'dimensions:width=1500,height=1000'
    ];
}

无论我尝试什么维度属性,验证都失败了。我已经尝试过诸如 max_width 超出测试用例文件尺寸之类的方法。

我的理论是验证器正在寻找要在帖子中传递的实际“文件”字段,但 elFinder 正在传递已上传文件的路径。

关于如何使用路径在 Laravel 中处理图像尺寸验证的任何想法?

【问题讨论】:

    标签: php validation laravel-5.4 laravel-backpack


    【解决方案1】:

    我通过添加自定义验证器方法和 PHP 的原生 getimagesize 函数来解决此问题,以使用规则提供的路径进行验证。

    创建自定义验证类型

    app/Providers/AppServiceProvider.php:

    包括验证器类:

    use Illuminate\Support\Facades\Validator;

    AppServiceProvider.php 中的boot() 函数内添加:

        Validator::extend('header_image', function($attribute, $value, $parameters, $validator) {
    
            $path = public_path();
            $photo = "$path/$value";
            list($width,$height) = getimagesize($photo);
            // $parameters[0] = width
            // $parameters[1] = height
            if ($width != $parameters[0] || $height != $parameters[1]) {
                return false;
            }else{
                return true;
            }
    
        });
    

    现在我可以使用header_image 作为验证类型并将宽度/高度约束作为参数传递:

    'photo' => 'header_image:1500,1000',

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 2021-06-09
      • 2012-05-11
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 2021-07-03
      相关资源
      最近更新 更多