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.
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">
Seguendo questi passi, puoi rendere accessibili pubblicamente le immagini nella cartella storage:
Con questi passi sei sicuro che i tuoi file siano sia sicuri che accessibili
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.