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

Laravel Storage未将图片保存至storage\app\public目录问题求助

排查Laravel图片上传未保存到storage/app/public的问题

1. 检查控制器文件存储逻辑

确保在PictureController的上传方法中,明确指定使用public磁盘存储文件:

// 正确示例:将文件存储到storage/app/public/pictures目录
$path = $request->file('image')->store('pictures', 'public');
// 或自定义文件名存储
$path = $request->file('image')->storeAs('pictures', 'custom_filename.jpg', 'public');

若仅调用store('pictures')未指定磁盘,默认会使用local磁盘,文件会存入storage/app/pictures而非目标目录。

2. 验证文件是否被正确接收

在控制器方法中先确认上传文件的有效性,避免无文件时仍生成数据库记录:

if (!$request->hasFile('image') || !$request->file('image')->isValid()) {
    return back()->withErrors('上传图片无效,请重新选择');
}

3. 检查目录权限

确保storage和软链接后的public/storage目录具备写入权限:

  • Linux/macOS执行命令:
chmod -R 755 storage public/storage
chown -R www-data:www-data storage public/storage # 根据服务器运行用户调整
  • Windows右键对应目录,设置读写权限给运行PHP的用户(如IIS_IUSRS或本地登录用户)。

4. 确认模型字段与存储路径写入

检查Picture模型的$fillable数组包含存储路径字段(如image_path),并确保将正确路径写入数据库:

// Picture.php
protected $fillable = ['image_path', ...];

// 控制器中保存模型
Picture::create([
    'image_path' => $path, // $path为store()返回的相对路径,如pictures/xxx.jpg
    // 其他字段
]);

5. 检查表单enctype属性

确保create_picture.blade.php中的表单设置了正确的编码类型,否则文件无法被上传:

<form action="/picture/create" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="image" id="image">
    <button type="submit">上传图片</button>
</form>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 20:42:38