使用存储在数据库中的图像路径在Laravel 5.0中显示图像

时间:2016-05-08 12:19:52

标签: laravel

在我的ImageController中,我已将图像移动到目录并将图像路径保存在数据库中的表中,

public function store(Request $request)
{
    $new_country = new SelectCountry();
    $message = [
        'required' => "This field can not be empty",
    ];

    $this->validate($request, [
        'country_name' => 'required',
        'alternate_title' => 'required',
        'country_flag' => 'required',
    ], $message);


    $new_country->country_name = $request->country_name;
    $new_country->alternate_title = $request->alternate_title;
    if($request->hasfile('country_flag'))
    {
        $country_flag_image = $request->file('country_flag');

        $country_flag_name = $country_flag_image->getClientOriginalName();

        $extention = $country_flag_image->getClientOriginalExtension();

        $dirpath = public_path('assets/images/country/');
        $country_flag_image->move($dirpath,$country_flag_name);

        $new_country->country_flag_path = $dirpath.$country_flag_name;
    }
    $new_country->save();

    return redirect()->route('admin.country');
}

现在我想使用路径并沿其他信息显示图像。我已使用以下代码返回视图,

public function select_country() 
{
    $countries = SelectCountry::all();
    return view('auth.select_country')->with('countries',$countries);
}

在视图中,我使用以下代码显示存储在数据库中的数据,

<table class="table-hover table-responsive container-fluid col-xs-12 col-sm-12">        
    <thead>
        <tr>
            <th>Country Name</th>
            <th>Alternate Title</th>
            <th>Country Flag</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
            @foreach($countries as $country)
          <td>{{ $country->country_name }}</td>
          <td>{{ $country->alternate_title }}</td>
          <td><img src="{{ $country->country_flag_path }}"></td>
          <td>
            <a type="button" href="" class="btn btn-warning btn-xs">Update</a>
            <a type="button" href="" class="btn btn-danger btn-xs">Delete</a>
          </td>
        @endforeach
    </tbody>        

问题是在显示其他信息时不显示图像。 img 标记中的 src 属性是返回路径而不是目录。

如果有任何解决方案,请告诉我。感谢。

1 个答案:

答案 0 :(得分:1)

我认为您的问题在于设置存储文件夹的位置。 Laravel自动引用public文件夹以存储图像等,因此不需要public_path功能。

默认情况下,当Laravel在$dirpath内查看时,请尝试将$dirpath = "/asset/images/country"设置为public。然后,您可以通过执行<img src="{{ $country->country_flag_path }}">

来引用它

然后上传一个新图像并查看数据库的路径设置是什么,希望它应该更正常:)

请注意我的原始回答:

默认情况下,当Laravel在$dirpath内查看时,请尝试将$dirpath = "images/country"设置为public。然后,您可以通过执行<img src="{{ asset($country->country_flag_path) }}">

来引用它

应该仍然有效,因为我总是这样做:)