Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon How do I integrate image uploads with Laravel Livewire components


How do I integrate image uploads with Laravel Livewire components


Here's how you can integrate image uploads with Laravel Livewire components:

1. Install the `livewire/livewire` package via Composer:

bash
composer require livewire/livewire

2. Create a Livewire component that handles the image upload:

php
<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Livewire\WithFileUploads;

class ImageUpload extends Component
{
    use WithFileUploads;

    public $photo;

    public function save()
    {
        $this->validate([
            'photo' => 'image|max:1024', // 1MB Max
        ]);

        $this->photo->store('photos');
    }
}

3. In your Blade template, include the Livewire component and add a file input field:

html
<div>
    <form wire:submit.prevent="save">
        <input type="file" wire:model="photo">

        @error('photo')
            <span class="error">{{ $message }}</span>
        @enderror

        <button type="submit">Save Photo</button>
    </form>
</div>

4. When the user selects a file, Livewire will automatically handle the upload process[1][2][3][4].

5. To store the uploaded image, use the `store()` method on the `$photo` property[5]:

php
$this->photo->store('photos');

This will store the uploaded image in the `photos` directory within your application's `storage/app` folder.

6. You can also validate the uploaded file using Laravel's built-in validation rules[5]:

php
$this->validate([
    'photo' => 'image|max:1024', // 1MB Max
]);

7. If you want to display a preview of the uploaded image, you can use the `temporaryUrl()` method provided by Livewire[3][4]:

html
<img src="{{ $photo->temporaryUrl() }}">

This will generate a temporary URL for the uploaded image, allowing you to display a preview before the form is submitted.

That's it! With these steps, you can easily integrate image uploads into your Laravel Livewire components, providing a seamless user experience for uploading and previewing images.

Citations:
[1] https://www.itsolutionstuff.com/post/laravel-livewire-image-upload-exampleexample.html
[2] https://stackoverflow.com/questions/76199177/how-to-get-the-image-extension-in-laravel-livewiew-when-uploading-a-photo
[3] https://www.youtube.com/watch?v=1jVFf1YvyvI
[4] https://www.youtube.com/watch?v=cW4aF8_5NUY
[5] https://livewire.laravel.com/docs/uploads