People searching “Laravel storage link Vue” save a file and the <img> is 404. The public disk writes storage/app/public. The browser asks for /storage/.... The link connects them. The upload guide stores the file. The deploy guide says to skip this command on Laravel Cloud.
TL;DR
- storage:link maps public/storage to storage/app/public.
- Laravel Cloud does not keep that symlink.
- Do not commit
public/storageas a real directory of uploads. - Do not run this on Laravel Cloud and expect the next deploy to keep it.
The fix#
php artisan storage:linkThat creates public/storage. Run it once per machine that serves the public disk. The Vue page prints a root-relative URL:
<img v-if="post.cover_url" :src="post.cover_url" alt="" />cover_url is something like /storage/covers/a.jpg, from Storage::url($path) when the disk is public.
What to avoid#
Gotcha
Do not commit public/storage as a real directory of uploads. The symlink is local. Do not run this on Laravel Cloud and expect the next deploy to keep it. Cloud’s disk resets. User uploads there belong in the bucket the deploy guide points at.
FAQ#
How do I fix an image 404 with storage:link?
storage:link maps public/storage to storage/app/public. Laravel Cloud does not keep that symlink.
What goes wrong with Laravel storage link Vue?
Many developers save a file and the <img> is 404. Do not commit public/storage as a real directory of uploads.



