Laravel Backpack上传图片存数据库但站点不显示问题求助
Laravel Backpack上传图片仅存入数据库,未生成到public文件夹的解决方法
问题原因
图片实际存储在storage/app/public目录下,但未通过符号链接映射到站点public文件夹,或者字段未指定正确的存储磁盘,导致前端无法访问。
解决步骤
显式指定字段的存储磁盘
在InstagramPostsCrudController中给upload字段明确指定public磁盘(Laravel默认公开存储磁盘):protected function setupCreateOperation() { CRUD::setValidation(InstagramPostsRequest::class); CRUD::setFromDb(); CRUD::field('photo')->type('upload')->disk('public'); }创建public存储目录的符号链接
运行Laravel Artisan命令,将storage/app/public目录链接到public/storage,让web服务器能访问存储的文件:php artisan storage:link执行后会在
public文件夹下生成storage符号链接,对应storage/app/public内的内容。验证filesystem配置(可选)
确认config/filesystem.php里的public磁盘配置正确:'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ],确保
root指向storage/app/public,url包含/storage路径,visibility为public。自定义存储路径(可选)
如需将图片存入特定子目录,可添加path参数:CRUD::field('photo')->type('upload')->disk('public')->path('instagram/posts');此时图片会存在
storage/app/public/instagram/posts,前端访问路径为{APP_URL}/storage/instagram/posts/xxx.jpg。
内容的提问来源于stack exchange,提问作者Kostya Khmylov
相关产品推荐
相关产品推荐

