सबसे अच्छा तरीका है नीचे दिए गए उत्तर में @SlateEntropy जैसे प्रतीकात्मक लिंक को बहुत अच्छी तरह से बनाना । 5.3 से संस्करण की मदद से, लारवेल में एक कमांड शामिल है जो इसे करने के लिए अविश्वसनीय रूप से आसान बनाता है:
php artisan storage:link
यही कारण है कि एक से सिमलिंक बनाता public/storage
करने के लिए storage/app/public
आप के लिए और कहा कि इसके लिए बस इतना ही है। अब किसी भी फ़ाइल /storage/app/public
को एक लिंक के माध्यम से एक्सेस किया जा सकता है जैसे:
http://somedomain.com/storage/image.jpg
अगर, किसी भी कारण से, आप प्रतीकात्मक लिंक नहीं बना सकते हैं (हो सकता है कि आप साझा होस्टिंग आदि पर हों) या आप कुछ एक्सेस कंट्रोल लॉजिक के पीछे कुछ फ़ाइलों को सुरक्षित रखना चाहते हैं, तो एक विशेष मार्ग होने का विकल्प है जो पढ़ता है और छवि प्रदान करता है। उदाहरण के लिए इस तरह से एक साधारण क्लोजर मार्ग:
Route::get('storage/{filename}', function ($filename)
{
$path = storage_path('public/' . $filename);
if (!File::exists($path)) {
abort(404);
}
$file = File::get($path);
$type = File::mimeType($path);
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
});
अब आप अपनी फ़ाइलों को उसी तरह एक्सेस कर सकते हैं, जैसे आप एक सिमलिंक करते हैं:
http://somedomain.com/storage/image.jpg
यदि आप इंटरवेंशन इमेज लाइब्रेरी का उपयोग कर रहे हैं, तो आप इसके बिल्ट इन response
विधि का उपयोग कर चीजों को अधिक रसीला बना सकते हैं:
Route::get('storage/{filename}', function ($filename)
{
return Image::make(storage_path('public/' . $filename))->response();
});
चेतावनी
ध्यान रखें कि आप मैन्युअल रूप से उन फ़ाइलों की सेवा कर रहे हैं , जो आप परफ़ॉर्मेंस पेनल्टी लगा रहे हैं, क्योंकि आप फ़ाइल सामग्री को पढ़ने और भेजने के लिए पूरे लारवेल अनुरोध जीवनचक्र से गुज़र रहे हैं, जो HTTP सर्वर को संभालने की तुलना में काफी धीमा है।