2017-04-23 136 views
0

我怎樣才能從我的表單中的兩個單獨的文件上傳選項傳遞多個圖像文件,然後存儲到數據庫中?這是我的模式和控制器代碼。如何在laravel中以單一形式上傳兩個不同文件上傳字段中的多個圖像?

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,文件上傳的 previewPageImage。 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循環的兩個不同的文件上傳卡住。任何建議或提示。

回答

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 
    ]); 
} 
+0

謝謝你,工作。 – cnayak

相關問題