Laravel在数据库中的不同字段中上传多个文件

时间:2017-04-12 04:47:14

标签: php laravel laravel-5

我在数据库中的三个不同字段中尝试了三个图像...因为我在控制器中跟踪方法。但我面临的问题是,虽然我有三个输入字段,但它只存储了两个具有相同名称的图像在公共文件夹和数据库中,它存储的值如1 (for product_image), 4 ( for vendor_image), 9 (for user_image)。 我如何正确地将图像存储在公共文件夹以及数据库中..提前谢谢。

这是控制器:

public function store(Request $request)
    {
        $product = new Product();
    $files= [];

    if($request->file('product_image'))   $files[] = $request->file('product_image');
    if($request->file('vendor_image'))   $files[] = $request->file('vendor_image');
    if($request->file('user_image'))     $files[] = $request->file('user_image');


      foreach($files as $file)
      {

        if(!empty($file))
        {
    $filename = time().'.'.$file->getClientOriginalExtension();
     $file->move('images/',$filename);
      }
     }
        $product->product_image = $filename[0];

        $product->vendor_image = $filename[1];

        $product->user_image = $filename[2];
     $product->save();
    }

这是View部分:

<div class="form-group">
     <label>Product Image</label>
     <input type="file" name="product_image"  id="product_image" width="200px">

</div>
<div class="form-group">
     <label>Feature Image</label>
     <input type="file" name="vendor_image"  id="vendor_image" width="200px">

</div>
<div class="form-group">
     <label>Slurp Image</label>
     <input type="file" name="user_image"  id="user_image" width="200px">

</div>

1 个答案:

答案 0 :(得分:2)

将您的电影名称存储到数组

    $filenames = [];
foreach($files as $file)
    {
    if (!empty($file))
        {
        $filename = time() . '.' . $file->getClientOriginalExtension();
        $file->move('images/', $filename);
        $filenames[] = $filename
        }
    }



$product->product_image = $filenames[0];
$product->vendor_image = $filenames[1];
$product->user_image = $filenames[2];
$product->save();