Laravel无法显示上传的图像

时间:2014-06-05 02:11:16

标签: php laravel laravel-4 blade

我正在尝试为图像创建一个简单的文件上传系统,即使经过数小时的谷歌搜索,我也似乎无法让它工作。用户将图像上传到我的网站,我将图像的路径存储在数据库中,然后通过使数据库路径成为img标记的src来显示图像。看起来很简单,但它仍然不适合我。无论如何,这是我的代码。

//posting upload in controller
//i named images docs

public function postUpload(){

    Input::file('file')->move(base_path() . '/public/uploads');

    $doc = new Doc();
    $doc->title = Input::get('title');
    $doc->caption = Input::get('caption');
    $doc->path = base_path() . '/public/uploads' . Input::file('file')->getClientOriginalName();

    $doc->save();

}

这是我显示上传图像的索引视图:

@extends('layouts.caselistlayout');

@section('content')


@foreach($docs as $doc)
<h1>{{ $doc->title }}</h1>
<h2>{{ $doc->caption}}</h2>
<img src='{{ $doc->path }}'>

@endforeach

@stop

我可以为我的上传视图提供代码,但我不认为在这种情况下需要它。

感谢您的帮助!

编辑:忘了提到确切的问题是图像没有显示。标题和标题显示在索引页面上,但不显示图像。我只看到图像所在位置的默认HTML占位符。

编辑2:文件最终在文件夹中,我可以在数据库的路径列中看到URL。

1 个答案:

答案 0 :(得分:5)

您正在保存导致问题的数据库的完整物理路径。您实际上需要一个http地址。例如:

http://example.com/uploads/img1.jpg

删除以下行:

  $doc->path = base_path() . '/public/uploads' . Input::file('file')->getClientOriginalName();

相反,请保存以下内容:

  $doc->path = 'uploads/' . Input::file('file')->getClientOriginalName();

并且从您的观点来看:

<img src='{{ asset($doc->path) }}'>