Laravel上传图片未保存至指定存储目录问题求助
问题分析与解决
你遇到的问题是文件实际存储路径和预期不一致,原因如下:
你的filesystems.php中配置的public磁盘根目录为storage_path('app/public'),而调用store('storage/thumbnails')时,传入的路径是相对于磁盘根目录的,所以文件实际被存在了:
storage/app/public/storage/thumbnails/k0TF3NW6WvWWjHuEtZ0OW7TTRQbfSB6lvD1GJls3.png
而你查看的是storage/thumbnails目录,自然找不到目标文件。
解决步骤
1. 修正存储路径参数
修改Controller中的代码,将存储路径改为thumbnails(移除前缀storage/):
$path = request()->file('thumbnail')->store('thumbnails'); return 'Done: ' . $path;
此时文件会被存储到storage/app/public/thumbnails/目录下,这是public磁盘对应的正确位置。
2. (可选)显式指定存储磁盘
若需要明确指定存储磁盘,可添加第二个参数:
$path = request()->file('thumbnail')->store('thumbnails', 'public');
由于你已将default设置为public,此操作和步骤1效果一致。
3. 创建符号链接(用于Web访问)
如果需要通过浏览器访问这些图片,需运行Artisan命令创建public/storage到storage/app/public的符号链接:
php artisan storage:link
之后即可通过{{ asset('storage/thumbnails/文件名') }}格式的URL访问图片。
内容的提问来源于stack exchange,提问作者Niek Neuvel
相关产品推荐
相关产品推荐

