我使用以下代码验证图像文件。我只想上传图片文件。 但是,当用户上传txt或csv文件时,它会引发异常(getimagesize():读取错误!)。 以下是验证码。
$rules = [ 'mobile_image'=>'mimes:jpg,jpeg,gif,png|dimensions:width=710,height=400', 'web_image'=>'mimes:jpg,jpeg,gif,png|dimensions:width=1182,height=300', ];
$validator = Validator::make($validateData, $rules);
if($validator->fails()){
}
我已经检查了Laravel验证文件。 他们使用getimagesize进行所有文件上传。 是否还有其他txt或csv文件的验证规则? 有没有办法用自定义规则覆盖验证器类?
答案 0 :(得分:0)
您正在使用dimensions
规则,因此Laravel会执行getimagesize()
来获取图片尺寸。如果您要上传文本文件,请更改mimes
并删除dimensions
规则。
答案 1 :(得分:0)
尝试以下示例代码:
$validator = Validator::make($validateData,[
'mobile_image'=>'mimes:jpg,jpeg,gif,png|dimensions:width=710,height=400',
'web_image'=>'mimes:jpg,jpeg,gif,png|dimensions:width=1182,height=300',
])->validate();
<强>更新强> 您可以冒险尝试下面的代码段:
$image_size = @getimagesize( $image_url );
if($image_size === false){
//Handle error message
}
else {
$validator = Validator::make($validateData,[
'mobile_image'=>'mimes:jpg,jpeg,gif,png|dimensions:width=710,height=400',
'web_image'=>'mimes:jpg,jpeg,gif,png|dimensions:width=1182,height=300',
])->validate();
}
希望这能解决您的问题。