Come rendere pubblicamente accessibili le immagini nella cartella storage di Laravel

Programmatore Laravel

Con oltre 20 anni di esperienza in sviluppo web, sono specializzato, tra i vari linguaggi di programmazione utilizzati per lo sviluppo web, in PHP e Laravel.

In Laravel, le immagini o altri tipi di file salvati nella cartella storage/app non sono accessibili pubblicamente per ragioni di sicurezza. Per rendere queste immagini accessibili via web, è necessario creare un collegamento simbolico da storage/app/public a public/storage. Ciò può essere fatto facilmente utilizzando un comando Artisan

Ecco come fare:

Salvare i file in in storage/app/public
Quando salvi i file, fallo nella cartella storage/app/public, per esempio:

    
// salvare un file uploadato nello storage pubblico
$request->file('image')->store('public/images');
    

Crea un link simbolico
Esegui il seguente comando Artisan per creare un link simbolico da storage/app/public a public/storage:

    
php artisan storage:link
    

Questo comando crea un link simbolico public/storage che punta alla cartella storage/app/public

Accedere alle immagini

Dopo aver creato il link simbolico, puoi accedere ai file salvati in storage/app/public tramite un url tipo: http://dominio.com/storage/images/filename.jpg.

Esempio completo

Ecco un esempio completo che spiega come gestire l'upload id file e renderli accessibili:

Metodo nel controller per gestire l'upload di file

    
public function upload(Request $request)
{
    // valida il file caricato
    $request->validate([
        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

    // salva il file nella cartella 'public/images'
    $path = $request->file('image')->store('public/images');

    // Estrae il nome del file
    $filename = basename($path);

    // Genera l' URL per accedere al file
    $url = asset('storage/images/' . $filename);

    return response()->json(['url' => $url]);
}
    

Template Blade per mostrare l'ummagine caricata

    
<img src="{{ asset('storage/images/' . $filename) }}" alt="Immagine caricata">
    

Riepilogo

Seguendo questi passi, puoi rendere accessibili pubblicamente le immagini nella cartella storage:

  1. Salva i file in storage/app/public
  2. Crea un link simbolico utilizzando php artisan storage:link
  3. Accedi ai file tramite la path URL public/storage

Con questi passi sei sicuro che i tuoi file siano sia sicuri che accessibili

Programmatore Laravel

Con oltre 20 anni di esperienza in sviluppo web, sono specializzato, tra i vari linguaggi di programmazione utilizzati per lo sviluppo web, in PHP e Laravel.