I have put in an upload form in my Laravel application, the file uploads and saves it but when I try to display it I get joew:1 Not allowed to load local resource: file:///C:/xampp/htdocs/socialNet/public/uploads/joew.png
This is the root I put in the filesystems.php file
'public' => [
'driver' => 'local',
'root' => storage_path('public/uploads'),
'visibility' => 'public',
],
So the photo is being saved inside a folder called public inside the storage folder.
This is the function retrieving the file
public function getUserAvatar()
{
if ($this->username) {
$userAvatar = User::where('username', $this->username)->value('avatar');
return "{$userAvatar}";
}
if (!$user) {
abort(404);
}
}
and this is the format that it is saved in the database.
C:\xampp\htdocs\socialNet\public\uploads\joew.png
Your browser is not allowed to directly load that file from your harddrive. In your view you are probably getting something like this:
<img src="C:\xampp\htdocs\socialNet\public\uploads\joew.png" />
You need a URL for the browser to access this image. In your view you need something like:
<img src="{{ asset('uploads/joew.png') }}" />
The asset()
function from Laravel creates a URL from the public
folder and appends the param you give it. So this will create a URL like: http://localhost/public/uploads/joew.png
Edit: The folder you specified (storage_path) is probably not readable for the browser at all. Change the uploads to public_path('uploads')
and it will be accessible.