Laravel验证多个文件

时间:2017-06-18 17:59:44

标签: laravel laravel-5

我正在尝试验证多选文件上传到Laravel。

print_r我的Request,但我不明白为什么在显然所有上传内容都是图片的情况下都无法验证。

print_r输出:

  

Array([file] => Array([0] => Illuminate \ Http \ UploadedFile Object(   [test:Symfony \ Component \ HttpFoundation \ File \ UploadedFile:private] =>   [ORIGINALNAME:Symfony的\分量\ HttpFoundation \文件\ UploadedFile的:私人]   => 236x177_3F2.jpg [mimeType:Symfony \ Component \ HttpFoundation \ File \ UploadedFile:private]   => image / jpeg [size:Symfony \ Component \ HttpFoundation \ File \ UploadedFile:private] =>   19335   [错误:Symfony \ Component \ HttpFoundation \ File \ UploadedFile:private] =>   0 [pathName:SplFileInfo:private] =>的/ tmp / phpWyxPrW   [fileName:SplFileInfo:private] => phpWyxPrW)[1] =>   Illuminate \ Http \ UploadedFile对象(   [test:Symfony \ Component \ HttpFoundation \ File \ UploadedFile:private] =>   [ORIGINALNAME:Symfony的\分量\ HttpFoundation \文件\ UploadedFile的:私人]   => Bierstadt_Sunrise_Lg_1966-1 [1] .jpg [mimeType:Symfony \ Component \ HttpFoundation \ File \ UploadedFile:private]   => image / jpeg [size:Symfony \ Component \ HttpFoundation \ File \ UploadedFile:private] =>   113765   [错误:Symfony \ Component \ HttpFoundation \ File \ UploadedFile:private] =>   0 [pathName:SplFileInfo:private] =>的/ tmp / php5GtG4F   [fileName:SplFileInfo:private] => php5GtG4F)))

代码:

if($typeof=="photo")
        {
        $photo = $request;
        print_r($photo::all());
        $validator = Validator::make($photo::all(), [
            'file' => 'required|image|mimes:png,gif,jpeg,bmp'
        ]);
        if ($validator->fails()) {
           abort(500,"Not an image!");
        }

即使您可以从print_r输出中看到它们是图像,它总是会因图像错误而中止。

看起来像嵌套数组我试图抵消我的验证请求然后我得到了未定义的偏移量,请帮助我获取实际的文件数据以进行正确的验证。

1 个答案:

答案 0 :(得分:3)

嗯,这不是图像,而是一系列图像。

您需要像这样验证:

if($typeof=="photo")
{
    $photo = $request;
    print_r($photo::all());

    $validator = Validator::make($photo::all(), [
        'file.*' => 'required|image|mimes:png,gif,jpeg,bmp'
    ]);

    if ($validator->fails()) {
       abort(500,"Not an image!");
    }
}