php - 在 Laravel 5.8 中更新帖子后未获取图像完整路径
问题描述
当我创建一个新帖子时,帖子图像正确显示。但是当我编辑和更新帖子图像时没有显示。从检查元素稍微挖掘后,我发现图像没有获得完整路径-
<img src='http://127.0.0.1:8000/Updated_Image.jpg'
但是未经编辑的帖子的路径是-
<img src='http://127.0.0.1:8000/uploads/posts/First_Image.jpg'
这是我在 postController.php 中的更新方法-
public function update(Request $request, $id)
{
$this->validate($request,[
'title'=>'required|max:255',
'content'=>'required',
'catagory_id'=>'required'
]);
$post = Post::find($id);
if($request->hasFile('featured'))
{
$featured = $request->featured;
$featured_new_name = time() . $featured->getClientOriginalName();
$featured->move('uploads/posts',$featured_new_name);
$post->featured = $featured_new_name;
}
$post->title = $request->title;
$post->content = $request->content;
$post->catagory_id = $request->catagory_id;
$post->save();
Session::flash('success','Post updated successfully!');
return redirect()->route('posts');
}
店铺功能:
public function store(Request $request)
{
$this->validate($request,[
'title'=>'required|max:255',
'featured'=>'required|image',
'content'=>'required',
'catagory_id'=>'required'
]);
$featured = $request->featured;
$featured_new_name = time().$featured->getClientOriginalName();
$featured->move('uploads/posts',$featured_new_name);
$post = Post::create([
'title' => $request->title,
'featured' => 'uploads/posts/' . $featured_new_name,
'catagory_id' => $request->catagory_id,
'content' => $request->content,
'slug'=> str_slug($request->title)
]);
Session::flash('success', 'A new post is created!');
return redirect()->back();
}
从显示两个文件的位置发布刀片文件代码-
<td> <img src="{{ asset($post->featured) }}" alt="{{ $post->title }}" width="50px" height="50px"> </td>
我也试过 {{ $post->featured }} 但它没有用。
解决方案
当您存储图像时,您会附加带有图像名称的路径,请参见下面的代码
$post = Post::create([
'title' => $request->title,
'featured' => 'uploads/posts/' . $featured_new_name,
'catagory_id' => $request->catagory_id,
'content' => $request->content,
'slug'=> str_slug($request->title)
]);
当您更新图像时,您不会附加路径,如下面的代码所示
if($request->hasFile('featured'))
{
$featured = $request->featured;
$featured_new_name = time() . $featured->getClientOriginalName();
$featured->move('uploads/posts',$featured_new_name);
$post->featured = $featured_new_name;
}
因此,只需在更新与存储相同的数据时附加路径。
推荐阅读
- python - 在 1 年的时间跨度内有效分发大量事件
- react-native - ios 10 中的 Linking.openURL(jumpUrl) 无法打开网址:tel xxx
- sql - 如何为已解码的列添加条件
- react-native - 有没有一种方法可以使用 PHP 为每个特定用户显示 MySQL 表值,以便在反应本机应用程序中查看他们的个人资料?
- flutter - 如何使用计数器方法增加颤动中淡入淡出动画的时间?
- c++ - vector.reserve(10000000) 的缺点是因为我想保留原始内存位置?
- sql - sql 两个where子句从一个表变成两个新行
- sql - 之前和之后的 SQL 子字符串
- angular - 在Angular 10中使用ng测试进行测试时如何克服业力中的NullInjector错误
- python - 如何在熊猫数据框中输入列表作为列值?