我无法验证背包中的图像尺寸。
在我的背包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图像尺寸验证的任何想法?
答案 0 :(得分:0)
我通过添加自定义验证器方法和PHP的本地getimagesize
函数来解决此问题,以使用规则提供的路径进行验证。
在app/Providers/AppServiceProvider.php
:
包括Validator类:
use Illuminate\Support\Facades\Validator;
boot()
中的AppServiceProvider.php
函数内部添加:
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',