在Laravel 5.8中上传多张图片

时间:2020-05-19 15:09:22

标签: laravel

我是Laravel的初学者。我正在尝试提交带有用户上传选项的选项的帖子。我不断收到错误消息“未定义的变量:数据”。我哪里出错了?

public function store(Request $request)
{
     //validate
     $this->validate($request, [
        'title' => 'required|min:10',
        'body'  => 'required|min:20',
        'filename' => 'nullable|max:2480',
        'filename.*' => 'mimes:jpeg,jpg,png'


    ]);   

    //store Image
    if($request->file('filename'))
    {        
        foreach($request->file('filename') as $image)
        {
            $name=time().$image->getClientOriginalName();;
            $image->move(public_path().'/images/', $name);
            $data[] = $name;  
        }
    }

    $post= new Post();
    $post->user_id = auth()->user()->id;
    $post->title = $request->input('title');
    $post->body = $request->input('body');
    $post->filename=json_encode($data);
    $post->save();

    return back()->withMessage('Post created successfully.');

}

1 个答案:

答案 0 :(得分:0)

我认为最好在foreach循环之外声明数组。

您可以尝试以下操作:

在foreach循环之外。

$data = array();

在您的foreach循环中,尝试像这样填充数组:

array_push($data, $name);
public function store(Request $request)
{
     //validate
     $this->validate($request, [
        'title' => 'required|min:10',
        'body'  => 'required|min:20',
        'filename' => 'nullable|max:2480',
        'filename.*' => 'mimes:jpeg,jpg,png'


    ]);   

   //Initialize an empty array
   $data = array();


    //store Image
    if($request->file('filename'))
    {        
        foreach($request->file('filename') as $image)
        {
            $name=time().$image->getClientOriginalName();;
            $image->move(public_path().'/images/', $name);

            //populate array here
            array_push($data, $name);
        }
    }

    $post= new Post();
    $post->user_id = auth()->user()->id;
    $post->title = $request->input('title');
    $post->body = $request->input('body');
    $post->filename=json_encode($data);
    $post->save();

    return back()->withMessage('Post created successfully.');

}