【问题标题】:How to upload multiple images from two different file uploads fields in single form in laravel?如何在 laravel 中以单一形式从两个不同的文件上传字段上传多个图像?
【发布时间】:2017-04-23 09:11:17
【问题描述】:

如何在我的表单中从两个单独的文件上传选项传递多个图像文件,然后存储到数据库中?这是我的架构和控制器代码。

Schema::create('images', function (Blueprint $table) {
        $table->increments('image_id');
        $table->increments('book_id')->unsigned();
        $table->string('coverPageImage');
        $table->string('previewPageImage');
        $table->timestamps();

  });

表单字段:BookID、coverPageImage 的文件上传、文件上传 预览页面图像。 coverPageImage 和 previewPageImage 都传递多张图片。

我能够将图像上传到文件夹并保存到数据库以进行单个文件上传。

$product_images = $request->file('coverPageImage');
foreach($product_images as $product_image){
   $coverImage_name = $product_image->getClientOriginalName();
   $upload = $product_image->move('images', $coverImage_name); 
   Image::create([
     'book_id' => $book_id,
     'cover_images' => $coverImage_name
      ]);
}

$preview_pages = $request->file('previewPageImage')
foreach($preview_pages as $preview_image){
   $previewImage_name = $preview_image->getClientOriginalName();
   $upload = $preview_image->move('images', $previewImage_name); 
      Image::create([
        'book_id' => $book_id,
        'preview_images' => $previewImage_name
      ]);
    }

我想使用以下方式:

 Image::create([
    'book_id' => $book_id,
    'cover_images' => $coverImage_name,
    'preview_images' => $previewImage_name
 ]);

但是我在为两个不同的文件上传使用 foreach 循环时被卡住了。任何建议或提示。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    如果您确定 $coverImage_name$previewImage_name 之间始终存在 1:1 的关系,那么您可以将它们推入一个数组,循环该数组,然后从内部创建图像。

    $images = [];
    $product_images = $request->file('coverPageImage');
    foreach ($product_images as $idx => $product_image){
        $coverImage_name = $product_image->getClientOriginalName();
        $upload = $product_image->move('images', $coverImage_name);
        $images[$idx]['cover_image'] = $coverImage_name;  
    } 
    
    $preview_pages = $request->file('previewPageImage')
    foreach($preview_pages as $idx => $preview_image){
        $previewImage_name = $preview_image->getClientOriginalName();
        $upload = $preview_image->move('images', $previewImage_name); 
        $images[$idx]['preview_image'] = $previewImage_name;
    }
    
    foreach($images as $idx => $arr) {
        Image::create([
            'book_id' => $book_id,
            'cover_images' => isset($arr['cover_image']) ? $arr['cover_image'] : null,
            'preview_image' => isset($arr['preview_image']) ? $arr['preview_image'] : null
        ]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 2018-12-30
      • 2015-11-03
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2019-12-30
      相关资源
      最近更新 更多