Cos’è il file storage
Laravel fornisce un potente livello di astrazione basato sul pacchetto PHP Flysystem. Disco locale, SFTP, Amazon S3 e altri backend si usano con la stessa API: puoi cambiare ambiente senza modificare il codice.Cambiando driver, il codice resta lo stesso. In sviluppo storage locale, in produzione S3: passaggio semplice.
Configurazione
La configurazione è inconfig/filesystems.php, dove definisci i “disk”. Un disk è la combinazione di un driver e una destinazione.
Driver principali:
Driver local
Usaroot di filesystems. Di default storage/app/private.
Cambiare il disk predefinito
ConFILESYSTEM_DISK.
Disk public e symlink
Il disk public è per file accessibili dal web. Di default salva in storage/app/public.
Per renderli raggiungibili crea il symlink public/storage → storage/app/public.
1
Crea il symlink
2
Ottieni l'URL del file
Operazioni base con la facade Storage
Lettura
Scrittura
Se
put fallisce restituisce false di default. Configura 'throw' => true per lanciare un’eccezione.Eliminazione
Download
URL
URL normale
local è relativo (/storage/file.jpg), con s3 è l’URL completo.
URL temporaneo
ContemporaryUrl (disponibile per local e s3).
Upload di file
store (nome file auto)
storeAs (nome specifico)
Con disk specifico
Via facade Storage
Visibilità
In Flysystem la visibilità pubblica/privata si gestisce convisibility.
storePublicly.
Più disk
Storage cloud (S3)
Installazione
Variabili d’ambiente
Anche servizi S3-compatibili (DigitalOcean Spaces, Cloudflare R2, Vultr Object Storage) usano il driver
s3. Imposta endpoint con l’URL del servizio.Metadata
Directory
Test
Storage::fake() per test senza toccare disk reali.
UploadedFile::fake()->image() richiede l’estensione GD di PHP.