Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

wyches11's avatar

Adding multiple images

Hello i have a form with 2 inputs, one is for uploading cover image and the other one is for uploading multiple images:

HKP5Sp4.md.png

const form = useForm({
    name: '',
    description: '',
    cover_image: null,
    images: []
});
<div class="col-span-2">
        <div class="relative">
          <input
            type="file"
            id="cover_image"
            @input="form.cover_image = $event.target.files[0]"
          />
        </div>
      </div>
      <div class="col-span-2">
        <div class="relative">
          <input
            type="file"
            id="images"
            multiple
            @input="form.images = $event.target.files"
          />
        </div>
      </div>

I have working logic for only cover_image and my question is how to deal with multiple images?

public function store(Request $request)
    {
        $request->validate([
            'name' => ['required'],
            'description' => ['required'],
            'cover_image' => ['required'],
            'images' => ['required']
        ]);

        if($request->hasFile('cover_image')) {
            $image = $request->file('cover_image')->store('realizations');
            Realization::create([
                'name' => $request->name,
                'description' => $request->description,
                'cover_image' => $image
            ]);

        return redirect(route('realizations.index'));
        }
    }
0 likes
2 replies
Sinnbeck's avatar

Close to the same

if($request->hasFile('images')) {
      foreach($request->file('images') as $image {
        $image->store('realizations');
    }
2 likes
Sinnbeck's avatar

And I suggest better validation

        $request->validate([
            'name' => ['required'],
            'description' => ['required'],
            'cover_image' => ['required', 'image' ],
            'images' => ['required', 'array', 'min:1'],
            'images.*' => ['image'] 
        ]);
3 likes

Please or to participate in this conversation.