загрузка нескольких изображений с системой, проверка не работает

#php #laravel #validation

#php #laravel #проверка

Вопрос:

Я попытался загрузить несколько изображений с помощью системы проверки, даже если я загружаю изображения типа jpeg, это выдает ошибку системы проверки. Изображения должны быть файлом типа: jpeg, jpg, png, gif, svg.

register.blade.php

 <form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
     @csrf
<div class="form-group" id="divim">
            <label>photos<span class="text-hightlight">*</span></label>
            <input class="form-control" type="file" name="images[]" value="{{ old('images') }}" multiple>
            @error('images')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
            @enderror
        </div>
        
         <div class="col-md-6 offset-md-4">
            <button type="submit" class="btn btn-primary">
                {{ __('Register') }}
            </button>
         </div>
       </form>
  

RegisterController.php

 protected function validator(array $data)
    {
        return Validator::make($data, [
     'images' => ['bail','required','mimes:jpeg,jpg,png,gif,svg','max:2048']
        ]);
    }
  

метод create / store

 protected function create(array $data)
    { 
$dataim = array();
         if($request->hasFile('images'))
         {
            foreach($request->file('images') as $file) 
            {
                $namee = encrypt($file->getClientOriginalName()).'.'.$file->extension();
                //$name = encrypt($namee).'.'.$file->extension();
                $name = "profiles\".$jdate->format('F').$jdate->year."\".$namee;
                $file->storeAs("public\profiles\".$jdate->format('F').$jdate->year, $namee); 
                //$Annonce->images = "annonces\".$jdate->format('F').$jdate->year."\".time().'.'.$image->extension();  
                array_push($dataim,$name);
            }
         }
        $user->images=json_encode($dataim);
        $imm =$user->images;
return User::create([
 'images'       => $imm
        ]);
    }
  

Ответ №1:

Поскольку вы хотите проверить массив, вы должны структурировать свои правила по-другому:

 return Validator::make($data, [
    'images' => ['bail', 'required', 'array', 'min:1'],
    'images.*' => ['bail', 'mimes:jpeg,jpg,png,gif,svg', 'max:2048'],
]);
  

Для получения дополнительной информации см. Документы по проверке массивов.