You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Livewire 3:如何将上传文件存入可公开访问的正确目录?

解决Laravel Livewire 3头像上传存储路径问题

核心问题原因

你当前使用的store('avatars')方法默认调用Laravel的local磁盘,对应存储路径为storage/app,所以文件会被存在storage/app/avatars。而要让文件能通过浏览器直接访问,需要将其存储到public磁盘对应的storage/app/public目录下。

解决方案

1. 修改上传代码指定存储磁盘

在调用store()方法时,传入第二个参数明确指定使用public磁盘:

// validation
$user->avatar = $this->photo->store('avatars', 'public');
$user->save();

修改后文件会自动存储到storage/app/public/avatars目录,数据库中存储的文件路径格式(avatars/xxx.jpg)保持不变,但存储位置符合访问要求。

2. 确保存储符号链接已创建

如果还未创建public/storage到storage/app/public的符号链接,执行以下Artisan命令:

php artisan storage:link

这个符号链接是浏览器能通过/storage路径访问storage/app/public下文件的必要前提。

3. 优化前端图片引用(可选)

可以使用Laravel官方提供的Storage::url()方法生成图片链接,适配不同存储配置的同时更符合框架规范:

<img src="{{ Storage::url(Auth::user()->avatar) }}">

该方法会自动拼接正确的/storage前缀,生成如/storage/avatars/xxx.jpg的可访问链接。

内容的提问来源于stack exchange,提问作者luisfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:37:04