为了账号安全,请及时绑定邮箱和手机立即绑定

使用 laravel 使用多图片上传器时如何从另一个帖子表单获取 id?

使用 laravel 使用多图片上传器时如何从另一个帖子表单获取 id?

PHP
慕标琳琳 2023-05-12 14:27:04
我有博客文章和多图片上传器两种形式,基本上我想在博客文章表单中使用多图片上传器,但是我需要从博客文章表单中获取 ID,以便每个博客文章都有自己独特的一组图像。我知道您可以使用外键在两个表之间建立链接,但我不确定该怎么做。现在博客文章表单只上传一个文件,所以我想要一种方法将多图像上传器逻辑使用到 PostController 中,然后将其保存到图像表中。非常感谢您的帮助谢谢。图片控制器    public function store(Request $request)    {        if(!$this->validate($request, [            'id' => 'integer',            'images.*' => 'sometimes|image|nullable|mimes:jpeg,png,jpg,gif,svg,webp|max:25000',            'post_id' => 'required'        ])) {            return redirect()->back()->with('errors');        }        if($request->hasfile('images'))        {            foreach($request->file('images') as $image)            {                $filenameWithExt = $image->getClientOriginalName();                $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);                $extension = $image->getClientOriginalExtension();                $fileNameToStore = $filename.'_'.time().'.'.$extension;                $path = $image->storeAs('public/image', $fileNameToStore);                $image = new Images;                $image->images = $fileNameToStore;                $image->post_id = $request->post_id;                $image->save();            }        }        return back()->with('Images have been uploaded!');    }后控制器    public function store(Request $request)    {        // Validate posted form data        $validated = $request->validate([            'id' => 'integer',            'vehicle'    => 'required|string',            'h1' => 'required|string',            'page_title' => 'required|string',            'meta_description' => 'required|string',            'image' => 'sometimes|image|nullable|max:5000',            'content' => 'required|string',            'active' => 'integer',            'user_id' => 'required'        ]);
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以将图像存储在您的PostController.


PostController在您的(store()方法中)中删除此部分:


        if($request->hasFile('image'))

        {

            $filenameWithExt = $request->file('image')->getClientOriginalName();


            $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);


            $extension = $request->file('image')->getClientOriginalExtension();


            $fileNameToStore = $filename.'_'.time().'.'.$extension;


            $path = $request->file('image')->storeAs('public/image', $fileNameToStore);

        }else {

            $fileNameToStore = null;

        }

并在创建post循环后保存图像。更改此行:


$image->post_id = $request->post_id;

对此:


$image->post_id = $post->id;

首先使用Images顶部的模型PostController。您的新循环应如下所示:


    if($request->hasfile('images'))

    {

        foreach($request->file('images') as $image)

        {

            $filenameWithExt = $image->getClientOriginalName();


            $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);


            $extension = $image->getClientOriginalExtension();


            $fileNameToStore = $filename.'_'.time().'.'.$extension;


            $path = $image->storeAs('public/image', $fileNameToStore);


            $image = new Images;

            $image->images = $fileNameToStore;

            $image->post_id = $post->id;

            $image->save();

        }

    }

然后(基于模型中的关系)您可以使用如下方式访问图像:


@foreach($post->images as $image)

    <img src="public/image{{ $image->fileNameToStore">

@endforeach


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信