10

In my Laravel project I'm trying to load an image into my view using blade but it displays as a broken link. I inspect it with firebug and the src is pointing to the image but nothing is displaying.

My image is located in my project's public/images/users/3/profilePictures/

Here is my <img> in the view.blade.php

<img class="com-profile-picture" src="images/users/{{ $follower->id }}/profilePictures/50thumb-{{ $follower->profilePicture->url }}" alt="{{ $follower->first_name }}&nbsp;{{ $follower->last_name }} Profile" width="50" height="50">

However I get this when I load the page:

enter image description here

When I inspect the image with firebug I see this:

enter image description here

That is the correct src and the image does exist in my public/images/users/3/profilePictures/ directory

Anyone know why this is happening?

xslibx
  • 4,249
  • 9
  • 35
  • 52

6 Answers6

16

This may be caused you are in a route which does not represent the base URL. You should generate the URL for your assets relative to the public/ folder. Use URL::asset('path/to/asset') to generate the URL.

{{ URL::asset("images/users/{$follower->id}/profilePictures/50thumb-{$follower->profilePicture->url}") }}

Or as @lukasgeiter mentioned you can simply use asset('path/to/asset') helper.

Mohebifar
  • 3,341
  • 1
  • 24
  • 32
16

You can try with the

php artisan storage:link

else you can use this

A simple fix for the issue (linked broken error) in .env file

APP_URL=http://localhost

this replace with the

APP_URL=http://localhost:8000

then the issue will be fixed.

Thilina Dharmasena
  • 2,243
  • 2
  • 19
  • 27
  • Sometimes when you run more than one project and http://localhost:8000 is already in use, remember that if you use http://localhost:8001 your images might not be visible. You will have to change APP_URL=http://localhost:8000 to APP_URL=http://localhost:8001 – Strabek Jan 26 '23 at 09:52
1

delete already generated symlink and then run this command

php artisan storage:link
0

if you are using laravel, consider excluding public folder or any folder where your public files are store in .htacccess from folders that laravel control.

Do it like this in .htaccess

# Exclude directory from rewriting RewriteRule ^(public/) - [L]

MUHINDO
  • 788
  • 6
  • 10
0

Storage location before (Not Working) :

<img src="{{asset('storage/app/public/media/productImages/'.$list->image)}}" alt="" srcset=""> 

Working storage location :

<img src="{{asset('storage/media/productImages/'.$list->image)}}" alt="" srcset="">

Else try :

  1. Deleting all the linked/shortcut folders created in public folder
  2. Then recreating the link by running :

php artisan storage:link

-1

Goto public Folder

Delete the storage shortcut Then create Another shortcut for storage Folder Create Shortcut Storage Folder Then run php artisan storage:link