I have this code to save an image in the storage/app/uploads folder
$image_main = Image::where('property_id', $id)->get();
$file = $request->file('file');
$destinationPath = 'uploads';
$i = 0;
foreach ($file as $file1) {
$i++;
$extension = $file1->getClientOriginalExtension();
$path = $file1->storeAs(
$destinationPath, $i.time().".".$extension
);
This is my blade file
@foreach ($image_main as $images)
<img src="{{"/storage/app/".$images->filename}}
The file saves in the storage/app/uploads folder but it doesn't show to the user, it says file not found. am I to set anything in the filesystems.php file
If you are using
homestead
as the environment on Mac then you need to follow this:Follow these steps:
cd ~homestead
vagrant up
vagrant ssh
cd Code/PATH_TO_YOUR_APP_ROOT_DIR
php artisan storage:link
Access image like this
{{ asset('storage/img/myimage.jpg') }}
You can't use the storage folder for this. You need to move the images to the public folder to access from http.
Try to create a folder call images in public folder and upload the image to that folder. Then you can access the images as follows.
Laravel storage filesystem is so unique. When you doing any upload it will upload in the
storage/app/public
directory. To make it accessible inpublic
directory, things need to do is create symlink by run command:This command will symlinked
storage/app/public
topublic/storage
Just follow the documentation about how to put and how to retrieve the file url. I am pretty sure the step you are missing is creating the symlink.
Hope it helps.
Your storage folder is not accessible from user.
You must pass by Storage::url() method:
As:
https://laravel.com/docs/master/filesystem#retrieving-files