Sto facendo una funzione di caricamento di immagini per un sito Web utilizzando Laravel 5.1. A causa di problemi di sicurezza, desidero archiviare tali immagini nella cartella /storage/app
anziché in /public
. URL dell'immagine, ad esempio:Laravel 5.1 - Visualizza le immagini memorizzate nella cartella di archiviazione
/storage/app/images/<image_name>
Al fine di ottenere l'immagine da /storage/app
, ho istituito un percorso specifico per questo:
http://app.com/image/<image_name>
Per puntare richieste di immagine a /storage
:
Route::controllers([
'image' => 'Frontend\ImageController',
]);
In ImageController
, ecco il codice per creare la risposta:
public function missingMethod($filename = [])
{
if (is_array($filename)) {
$filename = implode('/', $filename);
}
// storage_path('app') - path to /storage/app folder
$path = storage_path('app') . '/' . $filename;
$file = \File::get($path);
$type = \File::mimeType($path);
return \Response::make($file,200)
->header("Content-Type", $type);
}
Il mio problema è, dopo aver usato questa strada per recuperare le immagini, non riesco a visualizzarli, a mio avviso. Non c'erano 404, 500 o codici di stato di errore, l'URL di richiesta doveva essere, ma mostrava solo l'icona di un'immagine spezzata. C'è qualcosa di sbagliato nel mio codice?
Grazie!
Possibile duplicato di [Laravel 5 - Come accedere all'immagine caricata in memoria in Visualizza?] (Http://stackoverflow.com/questions/30191330/laravel-5-how-to-access-image-uploaded-in- storage-in-view) – Bogdan
L'ho provato ma l'immagine non può essere visualizzata, come menzionato sopra – xlKD
Il file può essere letto dal server HTTP? C'è un motivo per cui hai implementato la gestione delle immagini nel metodo 'missingMethod'? Perché quel metodo accetta un argomento ed è una matrice di parametri, non il '$ nomefile 'come lo hai definito. Hai provato l'approccio del collegamento simbolico? – Bogdan