Validating multiple files in array

后端 未结 4 1105
没有蜡笔的小新
没有蜡笔的小新 2020-12-15 18:49

I need to validate multiple uploaded files, making sure they are of a specific type and under 2048kb. The below doesn\'t appear to check all files in the array \'files\' an

相关标签:
4条回答
  • 2020-12-15 19:09

    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
    }
    
    0 讨论(0)
  • 2020-12-15 19:16

    You can validate files array like any input array in Laravel 5.2. This feature is new in Laravel 5.2.

    $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.. 
    }
    
    0 讨论(0)
  • 2020-12-15 19:18

    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);
        }
    }
    
    0 讨论(0)
  • 2020-12-15 19:19

    we can also make a request and validate it.

        php artisan make:request SaveMultipleImages
    

    here is the code for request

    namespace App\Http\Requests;
    
    use App\Core\Settings\Settings;
    use Illuminate\Foundation\Http\FormRequest;
    
    class SaveMultipleImages extends FormRequest
    {
        /**
         * Determine if the user is authorized to make this request.
         *
         * @return bool
         */
        public function authorize()
        {
            return true;
        }
    
        /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
        public function rules()
        {
    
            return ['files.*' => "mimes:jpg,png,jpeg|max:20000"];
        }
    }
    

    and then in controller

    public function uploadImage(SaveMultipleImages $request) {
    
         dd($request->all()['files']);
    }
    
    0 讨论(0)
提交回复
热议问题