2017-08-06 80 views
0

我试图让上传的图片数据库,以显示它在我的观点,但该路径是错误的,它没有回来的图像:掌握laravel正道5.4

的越来越路径就是这样:

http://localhost/prestige/public/admin/[%22http:////localhost//prestige//public//uploads//services//icons//24//0.jpg%22]

,并在数据库中的图像的路径是这样的:

[ “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

'src =“{{asset($ service-> services_image)}}”' –

+0

它也带有错误的网址: http:// localhost/prestige/public/admin/[%22http://// localhost //声望// public //上传//服务//图标// 24 // 0.jpg%22] –

+1

您可以将代码存储在数据库中的图像路径的位置吗? – harshpatel991

回答

0

asset() helper通常用于这一点 - 它会构建一个网址与你的应用程序的public目录为基础。

+0

我试过了,但没有工作太多,它回来了这个URL http:// localhost/prestige/public/admin/[%22http://// localhost // prestige //public//uploads//services//icons//24//0.jpg%22] –

+0

然后'$ service-> services_image'不是你所期望的。用'dd()'把它转出来看看它包含了什么。 – ceejayoz

+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外观进行操作时,您不必剥去域名。