Yasmin French
Yasmin French

Reputation: 1282

Echo file URL from Laravel storage

Im using this code in my laravel view to echo a files path, but its coming up in chrome dev tools with a 404 response.

<img src="{{ URL::to('/').Storage::url($post->image) }}">

which echos this onto the page

http://localhost:8000/storage/public/bd0e2f7f.png

The file lives there and this is the correct name for the file so im not entirely sure why its coming up with a 404!

Upvotes: 0

Views: 2188

Answers (2)

Abhay Maurya
Abhay Maurya

Reputation: 12277

Simple solution can be:

<img src="{{ Storage::url($post->image) }}">

Reference here .

I am assuming you have included Storage as you also used it in your code, if not then use this:

<img src="{{ \Illuminate\Support\Facades\Storage::url($post->image) }}">

Upvotes: 0

Juan Cort&#233;s
Juan Cort&#233;s

Reputation: 21122

It looks like even though it sees like your path is fine from the app root folder it's not where laravel is looking for it. Laravel will look inside app/public for your path, resulting in an internal app/public/storage/public/bd0e2f7f.png which, unless you've created a symbolic link between the app/storage/public and `app/public, wont find the file.

The solution, taken from the documentation, is to run:

php artisan storage:link

from the command line which creates the above-mentioned link, and will allow you to access the file with the url http://localhost:8000/storage/bd0e2f7f.png, not http://localhost:8000/storage/public/bd0e2f7f.png

From the docs

The storage/app/public directory may be used to store user-generated files, such as profile avatars, that should be publicly accessible. You should create a symbolic link at public/storage which points to this directory. You may create the link using the php artisan storage:link command. source

Upvotes: 2

Related Questions