如何使用laravel将多个图像上传到数据库?

时间:2019-12-24 08:39:34

标签: laravel

我正在尝试将多个图像上传到数据库中,但是只有一个正在上传,而不是多个。

如何将多个图像上传到数据库?

谁能告诉我我的代码出了什么问题?

        [database table ][1]
        [1]: https://i.stack.imgur.com/kgv4r.png  

控制器

public function singalprojectaction(Request $request)
  {
   $input=$request->all();
   $images=array();
   if($files=$request->file('images')){
   foreach($files as $file){
   $name=$file->getClientOriginalName();
   $file->move(public_path('projects'), $name);
   $images[]=$name;
   }
   }
   $query=DB::table('single_portfolio')->insert( [
  'Project_name' =>$input['project_name'],
  'Client_Name' =>$input['Client_name'],
  'Completion_date' =>$input['Completion_date'],
  'Duration' =>$input['Duration'],
  'project_image_one'=>  implode("|",$images),
  'Description' =>$input['Description'],
   'project_id' =>$input['select_project'],
   ]);
  if($query)
   {
   return response()->json([
  'message'   => 'Image is Successfully Inserted',
  'class_name'  => 'alert-success'
  ]);
   }
  else{

 return response()->json([
'message'   => 'Data  is not inserted Inserted',
'class_name'  => 'alert-warning'
 ]);

  }
  }

html视图

<form action="Route('singal.action') }}" id="singal_project" 
   enctype="multipart/form-data">
   {{ csrf_field() }}
   <div class="alert" id="message" style="display:block;"></div>
   <div class="group-form">
      <label>Drop Multple Imges</label>
      <input required type="file" class="form-control" name="images[]"
         multiple>
   </div>
</form>

2 个答案:

答案 0 :(得分:2)

尝试此操作以插入多张图像

 public function singalprojectaction(Request $request)
  {
     $input=$request->all();
     $datas = [];
     $result = [];
     if ($request->hasfile('images')) {
        foreach ($request->file('images') as $key => $file) {
        $name = $file->getClientOriginalName();
        $file->move(public_path() . '/projects/', $name);
             $datas[$key] = $name;
        }
    }

        $query=DB::table('single_portfolio')->insert( [
                  'Project_name' =>$input['project_name'],
                  'Client_Name' =>$input['Client_name'],
                  'Completion_date' =>$input['Completion_date'],
                  'Duration' =>$input['Duration'],
                  'project_image_one'=>  implode("|",$datas);
                  'Description' =>$input['Description'],
                  'project_id' =>$input['select_project'],
                   ]);
        if($query){
          return response()->json(['message'   => 'Image is Successfully Inserted','class_name'  => 'alert-success']);
                   }
        else{
          return response()->json(['message'   => 'Data  is not inserted Inserted','class_name'  => 'alert-warning'
                 ]);
           }
        }

答案 1 :(得分:0)

您将必须将插入代码包装在foreach语句中:请参见下文

foreach($files as $file){
                   $name=$file->getClientOriginalName();
                   $file->move(public_path('projects'), $name);


 $query=DB::table('single_portfolio')->insert( [
                      'Project_name' =>$input['project_name'],
                      'Client_Name' =>$input['Client_name'],
                      'Completion_date' =>$input['Completion_date'],
                      'Duration' =>$input['Duration'],
                      'project_image_one'=>  $name),
                      'Description' =>$input['Description'],
                       'project_id' =>$input['select_project'],
                       ]);

                   }