2016-12-05 88 views
1

我已经使用下面的代码来验证图像文件。我只想上传图片文件。 但是,当用户上传txt或csv文件时,它会引发异常(getimagesize():读取错误!)。 以下是验证码。Laravel 5.3: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

您使用的是dimensions规则,因此Laravel执行getimagesize()以获取图像尺寸。如果要上传文本文件,请更改mimes并删除dimensions规则。

https://laravel.com/docs/5.3/validation

+0

不,我不想上传文本文件。我想上传图片文件。然而,在验证中,当有人尝试上传txt文件时会引发错误 – shafiq

+1

他刚刚解释了为什么... – jcorry

+0

是的,我了解getimagesize()问题,并已在我的问题中提到过。 我必须使用尺寸验证图像。但是,如果用户试图上传txt文件,那么它会抛出异常(我目前在try catch块中处理过)。 我想用一些自定义的Laravel验证来处理这个错误。有没有办法做到这一点? – shafiq

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(); 

UPDATE 您可以在自己的你的风险片断如下尝试:

$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(); 
} 

希望这将解决您的问题。

+0

感谢解决方案,仍然得到同样的问题。 – shafiq

+0

@ user1048123_SOreadytohelp:查看我的更新 –

+0

我已经用try catch块来处理它。我想要一些Laravel的扩展。 – shafiq