【问题标题】:Getting the right path with laravel 5.4使用 laravel 5.4 获得正确的路径
【发布时间】:2017-08-06 01:03:48
【问题描述】:

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

获取路径是这样的:

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

【问题讨论】:

  • src="{{asset($service-&gt;services_image)}}"
  • 你能贴出你在数据库中存储图像路径的代码吗?
  • 你为什么要准确地分配给一个数组?为什么要存储为 JSON?这部分对我没有任何意义

标签: php laravel-5


【解决方案1】:

首先,您应该查看如何存储图像路径。如果您不希望它在一个数组中,那么您必须奇怪地分配它。您可以覆盖分配的工作方式:

public function setServicesImageAttribute($value)
{
    $this->attributes['services_image'] = $value;
}

您可以通过这种方式修改分配。

同样,您可以使用以下方法修改检索:

public function getServicesImageAttribute($value)
{
    return $value;
}

只需在此处修改您期望的检索方式即可。

由于它是 JSON 数据,您可以使用 property $casts = ['services_image' =&gt; 'json']; 将其配置为 JSON,然后它会为您处理 JSON 分配和检索。 (如果默认情况下所有内容都始终在 JSON 对象中,我不记得了,所以请查看您为分配所做的工作,因为您显然没有预料到这种行为)。

如果出于某种原因您将其保存在 JSON 数组中,如果您想从 JSON 数组中提取它,只需将 getter 修改为 return json_decode($value)[0];

可能值得从分配中剥离域并使用url() 帮助器为您解决该问题。如果您出于某种原因重用数据库,这会使您与正在工作的域分离。这也意味着当您使用 File 外观之类的东西操作域时,您不必剥离域。

【讨论】:

    【解决方案2】:

    asset() helper 通常用于此目的 - 它会以您应用的 public 目录为基础构建一个 URL。

    【讨论】:

    猜你喜欢
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2017-09-01
    相关资源
    最近更新 更多