laravel 5 mime图像验证在上传mp3或mp4时引发异常

时间:2015-05-24 03:03:00

标签: php image validation laravel laravel-5

好吧..我不知道你们中有多少人在Laravel中遇到过这个问题..我找不到任何解决办法。

我通过使用mime类型jpeg,bmp和png设置规则,使用Validator验证上传的图像。 如果不是这些类型,我会刷一条错误消息。

它适用于所有文件类型,但是当我上传mp3或mp4时,它在我的控制器中显示异常。

MyImageController.php代码:

    public function addImageDetails()

    {

    $input = Request::all();

    $ID = $input['ID'];
    $name = $input['name'];

    $file = array('image' => Input::file('image'));

    $rules = array('image' => 'required|mimes:jpeg,jpg,bmp,png'); 


    $validator = Validator::make($file, $rules);
    if ($validator->fails()) {

     \Session::flash('flash_message_error','Should be an Image');

      return view('addDetails');
    }

    else {

         //If its image im saving the ID, name and the image in my DB
     }

这是我上传mp3或mp4时出现的错误

       ErrorException in MyImageController.php line 25:
       Undefined index: ID

验证所有其他文件类型,如[.txt,.doc,.ppt,.exe,.torrent]等。

2 个答案:

答案 0 :(得分:1)

Request::all();分配给变量$input

$input = Request::all();

然后你应该检查它是否有任何价值

if (isset($input['ID'])) 

如果条件满足,则应允许其继续进行其他步骤,您应该返回包含错误消息的视图,如下面的代码所示。

if (isset($input['ID'])) 
{
    $ID = $input['ID'];
    $name = $input['name'];
    $file = array('image' => Input::file('image'));
}
else
{
    return view('addDetails')->with('message', 'Image size too large');;
}

更新:

在这里检查图像类型

if (isset($input['ID'])) 
{
if (Input::file('image')) 
{
    $ID = $input['ID'];
    $name = $input['name'];
    $file = array('image' => Input::file('image'));
else
{
    return view('addDetails')->with('message', 'Uploaded file is not an image');;
}
}
else
{
    return view('addDetails')->with('message', 'Image size too large');;
}

答案 1 :(得分:0)

尝试使用这个干净的代码:

public function addImageDetails(Request request){
    $this->validate($request, [
        'image' => ['required', 'image']
    ]);

    //If its image im saving the ID, name and the image in my DB

}

在这种情况下,有一条名为image的规则可能对您有所帮助