这是后控制器和索引方法,用于在前端显示图像:
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
现在的问题是,当我尝试获取图像时,它只是显示图像名称...但是如何正确显示首页的图像。
这是我浏览器的输出文件。...图像表和发布表是单独连接到外键的。图像扩展名显示在首页上,但图像不显示
对不起,我的英语不好,但是我把代码,视图和表格都整理好了,以便任何人都可以轻松理解。 output like this
答案 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
中。您必须重新上传并再次进行测试。
答案 2 :(得分:0)
如果将图像保存在存储器中,请运行以下命令: php artisan storage:link
然后您可以通过
获得图像<p><img src="{{url('storage/images').'/'.$image->name}}"></p>
如果您将图片保存在公共路径中,则可以直接通过
获取图片<img src="{{url('/images').'/'.$image->name}}"/>