10-Apr-2023
.
Admin
Hi Dev,
I am going to show you example of How to Link Storage Folder to Public in Laravel 9?. We will use Download Files From Public Storage Folder in Laravel 9. This article will give you simple example of Laravel 9 Link Storage Folder to Public Example Tutorial. you will learn Laravel 9 Link Storage Folder Example. you will do the following things for how to link up storage files laravel 9.
Many times we have issues about How to fix the storage link issue of laravel project on production with using the shared hosting plan so we have added the perfect solution here for you.
Whats types issues comes with link images with storage folder and we have solved here:
Download Laravel
Let us begin the tutorial by installing a new laravel application. if you have already created the project, then skip following step.
composer create-project laravel/laravel example-app
Let’s linked your files with storage folder in laravel using the following command:
php artisan storage:link
It turns out I was missing a view directories in laravel_root/storage/. In order to fix this using the following steps:
1. cd {laravel_root}/storage
2. mkdir -pv framework/views app framework/sessions framework/cache
3. cd ..
4. chmod 777 -R storage
5. chown -R www-data:www-data storage
That creates a symlink from public/storage to storage/app/public for we and that’s all there is to it. Now any file in /storage/app/public can be accessed via a link like:
http://yourdomain.com/storage/image.jpg
Create Route
In this first step we will engender two routes. so open your routes/web.php file and add following route.
routes/web.php
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;
});
Next to
Route::post('process', function (Request $request) {
// cache the file
$file = $request->file('photo');
// generate a new filename. getClientOriginalExtension() for the file extension
$filename = 'profile-photo-' . time() . '.' . $file->getClientOriginalExtension();
// save to storage/app/photos as the new $filename
$path = $file->storeAs('photos', $filename);
dd($path);
});
Now we can access files the same way we do a symlink:
http://somedomain.com/storage/image.jpg
If we are using the Intervention Image Library, we can make things more successful by using its built-in response method:
Route::get('storage/{filename}', function ($filename)
{
return Image::make(storage_path('public/' . $filename))->response();
});
It will help you...
#Laravel 9