সেরা পদ্ধতির একটি তৈরি করা সিম্বলিক লিঙ্ক খুব ভাল নির্দিষ্ট @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();
});
সতর্কতামূলক
মনে রাখবেন যে ম্যানুয়ালি ফাইলগুলি পরিবেশন করে আপনি একটি পারফরম্যান্স পেনাল্টি বহন করছেন , কারণ আপনি ফাইলের বিষয়বস্তু পড়তে এবং প্রেরণ করার জন্য পুরো লারাভেল অনুরোধের জীবনচক্রটি অতিক্রম করছেন যা এইচটিটিপি সার্ভার হ্যান্ডেল করার চেয়ে যথেষ্ট ধীর ।