如何在Laravel中上传多张图片

15

我正在尝试在一个数据库表中上传多张图片,然后在展示页面中访问它们。我已经尝试了这个教程:laraveldaily.com/upload-multiple-files-laravel-5-4/,但是其中创建了两个不同的表并建立了关系。

我希望这可以在一个单独的表中实现。


3
展示你已经尝试过的代码。 - Chonchol Mahmud
我正在跟随教程:laraveldaily.com/upload-multiple-files-laravel-5-4 - Rojina
2
好的。你尝试过什么了吗? - Vaibhavraj Roham
6个回答

43

这是对我最有效的方法:

首先,在您的表单中执行以下操作:

<form class="form-horizontal" enctype="multipart/form-data" method="post" action="/details">

这是用于多项选择的:

<input required type="file" class="form-control" name="images[]" placeholder="address" multiple>

现在在你的控制器中执行以下操作:

public function store(request $request) {

    $input=$request->all();
    $images=array();
    if($files=$request->file('images')){
        foreach($files as $file){
            $name=$file->getClientOriginalName();
            $file->move('image',$name);
            $images[]=$name;
        }
    }
    /*Insert your data*/

    Detail::insert( [
        'images'=>  implode("|",$images),
        'description' =>$input['description'],
        //you can put other insertion here
    ]);


    return redirect('redirecting page');
}

希望这能成功


嗨,我想知道如果我使用验证,我应该写什么?$data = $request->validate(['name'=>'required', 'files' => 'file']);它有点起作用,但是之后我无法获取文件数据。 - Martin Christopher
1
请验证以下请求: $this->validate($request, [ 'files' => 'array|required', 'files.*' => 'required|mimetypes:image/jpg,image/jpeg,image/bmp' ]); - mercury
1
工作得很棒,兄弟。 - Keyur Vala

3
<form role="form" method="post" action="{{URL::to('addimage')}}" enctype="multipart/form-data">
    <div class="form-group" style="padding-bottom: 15px">                            
         <label class="col-lg-3">Upload</label>
         <input class="btn btn-primary"  type="file" name="files[]" > <br/>
    </div>
</form>




$images = $request->file('files');
if ($request->hasFile('files')) :
        foreach ($images as $item):
            $var = date_create();
            $time = date_format($var, 'YmdHis');
            $imageName = $time . '-' . $item->getClientOriginalName();
            $item->move(base_path() . '/uploads/file/', $imageName);
            $arr[] = $imageName;
        endforeach;
        $image = implode(",", $arr);
else:
        $image = '';
endif;



        DB::table('fooo')->insert(
        array(
            'image' => $image
           )
       );

        Session::flash('message', 'Image upload successfully successfully');
        return redirect('/addimage');

2
这也可以通过以下方式实现:
            foreach ($request->file('files') as $index => $item) {
                $path = $request->files[$index]->store('images');
            }

2

这个对我有效。

表单:

<form class="form-horizontal" enctype="multipart/form-data" method="post" action="/details">

而这是用于多选图片的:

<input required type="file" class="form-control" name="image[]" placeholder="address" multiple>

现在在我们的模型中执行此操作:

protected fillable = ['producd','image', ];

现在在我们的控制器中这样做:

public function store(Request $request)
{
  $image = array();
  if($file = $request->file('image')){
      foreach($file as $file){
          $image_name = md5(rand(1000,10000));
          $ext = strtolower($file->getClientOriginalExtension());
          $image_full_name = $image_name.'.'.$ext;
          $uploade_path = 'uploads/images/';
          $image_url = $uploade_path.$image_full_name;
          $file->move($uploade_path,$image_full_name);
          $image[] = $image_url;
      }
      Image::insert([
          'image' => implode('|', $image),
          'producd' => $request->producd,
      ]);
      return redirect('/image.index'));       
  }
}

如何在Laravel中获取和显示主页上的多个图像 - Tamilarasan A
您的回答可以通过提供其他支持信息来改善。请[编辑]以添加更多细节,如引用或文档,以便他人可以确认您的答案是否正确。您可以在帮助中心中找到有关编写好答案的更多信息。 - Community

1

html

<input type="file" name="images[]" multiple>

控制器:存储文件夹存储

foreach ($request->file('images') as $imagefile) {
   return $imagefile->store('images','public');
}

0
    $images = array();
    if ($request->hasFile('gallery_image')) {
        $files = $request->file('gallery_image');
        foreach ($files as $file) {
            $image_name = md5(rand(1000, 10000));
            $ext = strtolower($file->getClientOriginalExtension());
            $image_full_name = $image_name . '.' . $ext;
            $file->move('Your image path here', 
            $image_full_name);
            $images[] = $image_full_name;
        }
    }
    $house->gallery_image = json_encode($images);

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接