【问题标题】:Not getting image full path after updating the post in Laravel 5.8在 Laravel 5.8 中更新帖子后未获取图像完整路径
【发布时间】:2020-01-21 03:05:40
【问题描述】:

当我创建新帖子时,帖子图片显示正常。 但是当我编辑和更新帖子图像时没有显示。从检查中挖掘一下 元素我发现图像没有获得完整路径-

<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 image after updating,broken image

【问题讨论】:

  • 也添加您的商店功能。因此,我们可以验证您的两个函数是否具有相同的路径
  • 我认为你的问题在这里 $post->featured = $featured_new_name;也请分享商店功能。
  • 创建和更新是否使用相同的功能?
  • 您应该需要更改其中之一,例如 $post->featured = $featured_new_name; $post->featured = '上传/帖子'.$featured_new_name;或喜欢 {{asset('uploads/posts'.$post->featured) }}
  • 替换 $post->featured = $featured_new_name;使用 $post->featured = 'uploads/posts/' 。 $featured_new_name

标签: php laravel


【解决方案1】:

当您存储图像时,您会附加带有图像名称的路径,请参见下面的代码

$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;
        }

所以只需在更新与 store 相同的数据时附加路径。

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 1970-01-01
    • 2019-10-23
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    相关资源
    最近更新 更多