usare il trait Livewire\WithFileUploads

Dato una var chiamata $logo con in wire:model su un input:f

$ext = $this->logo->extension();
$original_fname = $this->logo->getClientOriginalName()
$fname = 'nome-generale-' . date('U') . '.' . $ext;
$fpath = $this->logo->storeAs('cartella', $fname);
$filepath = '/' . $fpath;

Eliminare file

Se nella var $logo c’è la path del file

if(file_exists(public_path($this->logo))) {
	unlink(public_path($this->logo));
}
Tricks
  • Unico loader se più files e variabili: usare eventi JS con alpinejs

    <div x-data="{ isUploading: false, progress: 0 }"
    	x-on:livewire-upload-start="isUploading = true"
    	x-on:livewire-upload-finish="isUploading = false"
    	x-on:livewire-upload-error="isUploading = false"
    	x-on:livewire-upload-progress="progress = $event.detail.progress">
    	 <input type="file" wire:model="photo">
    	<div x-show="isUploading">
    		<progress max="100" x-bind:value="progress"></progress>
    	</div>
    </div>