2016-11-28 3 views
3

Ich habe einen Ordner in Laravel 5.3 Projekt im Speicher befindet und es enthält Bilddateien.Wie wird das Bild aus dem Speicherordner in Laravel 5.3 angezeigt?

Wie kann ich ein Bild aus diesem Ordner anzeigen?

Ich habe alle Namen mit

Storage::allFiles('images'); 

ich sie nicht auf die übliche Art und Weise aufgrund eines Ordner-Berechtigungen zugreifen können, und ich will nicht, sie ändern. Ich möchte auch nicht die Dateien in das öffentliche Verzeichnis legen.

Irgendwelche Vorschläge? Vielen Dank im Voraus.

Antwort

2

Sie könnten eine Controller-Funktion schreiben das Bild zurück ... so etwas wie:

public function image($file){ 
    $image = storage_path('images/' . $file); 

    if(!File::exists($image)) 
     App::abort(404); 

    // using Intervention Image package 
    return Image::make($image)->response('jpg'); 

    // using Laravel file response 
    $headers = ['Content-Type' => 'image/jpeg']; 
    return response()->file($image, $headers); 
} 

Natürlich ist dies sehr nackten Knochen ist ... man könnte es Fichte auf Nachfrage, um die Größe, untersuchen Mime-Typen und geben Sie den richtigen Antworttyp basierend darauf usw. zurück.

+0

Und für jedes Bild sollte ich diese Funktion aufrufen? –

+0

Yah, du hättest eine Route eingerichtet: 'Route :: get ('/ image/{file}', 'ImageController @ image');' wenn du also eine GET-Anfrage an '/ image' stellst dienen durch diese Funktion. – jcorry

+0

BTW, für ähnliche Anwendungsfälle wie diese, hatte ich wirklich gute Ergebnisse aus dem Interventions-Image-Paket. http://image.intervention.io/ – jcorry

Verwandte Themen