Skip to main content

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 è in config/filesystems.php, dove definisci i “disk”. Un disk è la combinazione di un driver e una destinazione. Driver principali:

Driver local

Usa root di filesystems. Di default storage/app/private.

Cambiare il disk predefinito

Con FILESYSTEM_DISK.
Il disk public è per file accessibili dal web. Di default salva in storage/app/public. Per renderli raggiungibili crea il symlink public/storagestorage/app/public.
1

Crea il symlink

2

Ottieni l'URL del file

Per symlink aggiuntivi configura links in config/filesystems.php.
Rimuovi il symlink con:

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

Con local è relativo (/storage/file.jpg), con s3 è l’URL completo.

URL temporaneo

Con temporaryUrl (disponibile per local e s3).
Su S3 puoi passare parametri aggiuntivi:
Per URL di upload temporaneo usa temporaryUploadUrl. Utile per upload client-side diretto verso S3.

Upload di file

store (nome file auto)

storeAs (nome specifico)

Con disk specifico

Via facade Storage

getClientOriginalName() e getClientOriginalExtension() sono manipolabili dall’utente: non sicuri. Usa hashName() ed extension().

Visibilità

In Flysystem la visibilità pubblica/privata si gestisce con visibility.
Per salvare pubblicamente file caricati usa 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.

Esempio pratico: upload dell’avatar

Nel template:
Ultima modifica il 13 luglio 2026