用laravel 5.4获得正确的道路

时间:2017-08-06 01:03:48

标签: php laravel-5

我正在尝试将上传的图像放到数据库中以在我的视图中显示它,但路径错误并且没有返回图像:

获取路径就是这样:

  

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)]);
            }
        }

2 个答案:

答案 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目录为基础构建网址。