图片未显示在首页上

时间:2019-01-19 04:21:12

标签: laravel laravel-5 laravel-4 laravel-5.2

这是后控制器和索引方法,用于在前端显示图像:

 public function index(){

        $user = Auth::user();
        $posts = Post::paginate(2);
        $images = Image::all();

      return view('post.index', compact('posts', 'user', 'images'));

}
public function create(){
    $categories = Category::all();

    return view('post.create', compact('categories'));
}
public function store(Request $request){

     $user_id = Auth::user();
     $post_id = $user_id->post()->create($request->all());


$image=array();
if($files=$request->file('image')){
    foreach($files as $file){
        $name= time() .$file->getClientOriginalName();
        $file->move('image',$name);

    Image::create([
        'image'     =>  $name,
        'post_id'   => $post_id->id,
    ]);

    }
}

    return redirect()->back();

}

这是我的视图文件,其中显示了以下内容:

@foreach($posts as $key=>$post) 
			
		<div class="col-sm-4 my-4">
   			 <div class="card center">
       			 <img class="card-img-top" src="img/user1.jpg" alt="">
        		<div class="card-body">
           		 <h2 class="card-title">{{$post->title}}</h2>
            	<p class="card-text">{{$post->category}}</p>
            	<p class="card-text">{{$post->title}}</p>
         
                    @foreach($images as $image)
                      <p>{{$image->image}}</p>
                    @endforeach
        		</div>        
   		 	 </div>

		</div>
		
			
		
		@endforeach

This is table of image

This is post table

现在的问题是,当我尝试获取图像时,它只是显示图像名称...但是如何正确显示首页的图像。

这是我浏览器的输出文件。...图像表和发布表是单独连接到外键的。图像扩展名显示在首页上,但图像不显示

对不起,我的英语不好,但是我把代码,视图和表格都整理好了,以便任何人都可以轻松理解。 output like this

Image table value in database

3 个答案:

答案 0 :(得分:2)

如果不是公用文件夹,则必须首先将其链接到公用文件夹

  

php artisan storage:link

然后您可以通过

检索图像
<img src="{{ '/public/images/' . $image->image }}">

图像是您用于存储图像的图像文件夹名称。

答案 1 :(得分:1)

根据您的代码,图像保存在image文件夹下。但是,您正在检索{{$image->image}},这不是正确的路径。这就是为什么您的图像不出现的原因。您可以使用url()assert()助手。或者,您可以在循环显示时简单地执行{{ '/images/' . $image->image }}

当然,您必须使用img标签将其显示为图像。

<img src="{{ '/images/' . $image->image }}">

更新 我再次阅读了您的代码,看到您的图像保存在应用程序的根路径中。在您的store方法中。将$file->move('image',$name)更新为$file->move(public_path('images'),$name)。现在,我们将您的图像放置到public_path中。您必须重新上传并再次进行测试。

您可以详细了解断言助手here和URL助手here

答案 2 :(得分:0)

如果将图像保存在存储器中,请运行以下命令: php artisan storage:link

然后您可以通过

获得图像
<p><img src="{{url('storage/images').'/'.$image->name}}"></p>

如果您将图片保存在公共路径中,则可以直接通过

获取图片
<img src="{{url('/images').'/'.$image->name}}"/>