Validating multiple files in array

↘锁芯ラ 提交于 2019-11-29 03:32:26

You can validate file array like any input array in Laravel 5.2. This feature is new in Laravel 5.2. You can do like following:

$input_data = $request->all();

$validator = Validator::make(
    $input_data, [
    'image_file.*' => 'required|mimes:jpg,jpeg,png,bmp|max:20000'
    ],[
        'image_file.*.required' => 'Please upload an image',
        'image_file.*.mimes' => 'Only jpeg,png and bmp images are allowed',
        'image_file.*.max' => 'Sorry! Maximum allowed size for an image is 20MB',
    ]
);

if ($validator->fails()) {
    // Validation error.. 
}

Please try this:

public function fileUpload(Request $request) {
    $rules = [];
    $files = count($this->input('files')) - 1;
    foreach(range(0, $files) as $index) {
        $rules['files.' . $index] = 'required|mimes:png,jpeg,jpg,gif|max:2048';
    }

    $validator = Validator::make($request->all() , $rules);

    if ($validator->fails()) {
        return response()->json(array(
            'success' => false,
            'errors' => $validator->getMessageBag()->toArray()
        ) , 400);
    }
}

Try this way.

// getting all of the post data
$files = Input::file('images');

// Making counting of uploaded images
$file_count = count($files);

// start count how many uploaded
$uploadcount = 0;

foreach($files as $file) {
    $rules = array('file' => 'required'); //'required|mimes:png,gif,jpeg,txt,pdf,doc'
    $validator = Validator::make(array('file'=> $file), $rules);
        if($validator->passes()){
            $destinationPath = 'uploads';
                $filename = $file->getClientOriginalName();
                $upload_success = $file->move($destinationPath, $filename);
                $uploadcount ++;
        }
}

if($uploadcount == $file_count){
    //uploaded successfully
}
else {
    //error occurred
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!