Laravel 5.6中无法将上传图片保存至public目录问题求助
解决Laravel上传图片无法保存到public目录的问题
嘿,我来帮你搞定这个Laravel图片上传的问题~从你给出的配置和代码片段来看,核心问题是没有明确指定使用public磁盘存储,再加上可能符号链接没配置到位,我们一步步来修复:
1. 修改上传代码,指定public磁盘
默认情况下,store()方法会用Laravel配置里的「默认磁盘」(一般是local,对应storage/app目录),而不是你配置好的public磁盘。你需要在store()方法的第二个参数里明确指定磁盘:
if (array_key_exists('logo', $validated)) { // 第一个参数是public磁盘下的子目录,可根据你的需求自定义 $logoPath = $validated['logo']->store('uploads/logos', 'public'); // 后续如果要把路径存到数据库,直接存$logoPath就行 // 前端访问的时候用 asset("storage/{$logoPath}") 就能拿到完整URL }
2. 创建storage到public的符号链接
Laravel的public磁盘实际指向storage/app/public目录,但要让外部用户能访问到这里的文件,必须创建一个从public/storage到storage/app/public的符号链接。在终端运行这个Artisan命令:
php artisan storage:link
如果是在生产环境(比如共享主机)没法运行命令,你可以手动创建符号链接,或者把这个命令加到你的部署脚本里。
3. 最后检查权限和配置
- 确认
config/filesystem.php里的public驱动配置和你贴的完全一致,没问题。 - 确保
storage/app/public和public/storage目录有服务器用户的写入权限(比如给www-data分配读写权限)。
这样调整后,上传的图片就会乖乖存到storage/app/public/uploads/logos目录,同时通过your-domain.com/storage/uploads/logos/xxx.jpg就能访问到啦~
内容的提问来源于stack exchange,提问作者Latheesan
相关产品推荐
相关产品推荐

