2016-12-05 78 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