我正在尝试将上传的图像放到数据库中以在我的视图中显示它,但路径错误并且没有返回图像:
获取路径就是这样:
并且数据库中的图像路径是这样的:
[ “HTTP://localhost/prestige/public/uploads/services/24/0.jpg”]
这里的观点是:
<img src="{{$service->services_image}}" alt="" height="200" width="200">
任何人都可以帮助我吗?
---更新--- 这里是上传图像的控制器:
if(!File::exists(('uploads/services/'.$services->id))) mkdir(('uploads/services/'.$services->id), 0777);
if ($request->services_image){
foreach($request->services_image as $key=>$pic){
$url = [];
$ext = $pic->getClientOriginalExtension();
$pic->move(('uploads/services/'.$services->id .'/'), $key.'.'.$ext);
if (! is_null(Service::find($services->id)->services_image)){
$url = Service::find($services->id)->services_image;
}
$url[] = url('uploads/services/'.$services->id .'/'. $key.'.'.$ext);
Service::find($services->id)->update(['services_image' => NULL]);
Service::find($services->id)->update(['services_image' => json_encode($url)]);
}
}
答案 0 :(得分:1)
首先,你应该看看你是如何存储图像路径的。如果您不希望它在数组中,您必须奇怪地分配它。您可以覆盖分配的工作方式:
public function setServicesImageAttribute($value)
{
$this->attributes['services_image'] = $value;
}
您可以这种方式修改作业。
同样,您可以使用以下方法修改检索:
public function getServicesImageAttribute($value)
{
return $value;
}
只需修改您希望在此处检索的方式。
由于它是JSON数据,您可以使用property $casts = ['services_image' => 'json'];
将其配置为JSON,然后为您处理JSON分配和检索。 (如果默认情况下一切都在JSON对象中,我无法记住我的头脑,所以要查看你正在做的任务,因为你显然没有预料到这种行为)。
如果出于某种原因将其保存在JSON数组中,只需将getter修改为return json_decode($value)[0];
,如果要从JSON数组中提取它。
可能值得从分配中剥离域并使用url()
帮助程序为您解决该问题。如果您因某种原因重复使用数据库,那么您将与您正在使用的域脱离。这也意味着当您使用File
外观等操作域时,您不必剥离域。
答案 1 :(得分:0)
asset()
helper通常用于此目的 - 它会以您应用的public
目录为基础构建网址。