2017-04-11 34 views
0

我想用數據庫中的不同字段保存多個圖像文件,如product_image,​​,slurp_image。我用下面的控制器方法來保存圖像文件Laravel:如何將多個圖像文件保存到數據庫中

public function store(Request $request) 
    { 
     $product = new Product(); 
     if($request->hasFile('product_image')) 
       { 
        $file = Input::file('product_image');    
        $imageName = time().'.'.$request->product_image->getClientOriginalExtension();   
        $product->product_image = $imageName; 
        $file->move('images/', $imageName); 
       } 
     if($request->hasFile('feature_image')) 
       { 
        $file = Input::file('feature_image');    
        $imageName = time().'.'.$request->feature_image->getClientOriginalExtension();   
        $product->feature_image = $imageName; 
        $file->move('images/', $imageName); 
       } 

     if($request->hasFile('slurp_image')) 
       { 
        $file = Input::file('slurp_image');    
        $imageName = time().'.'.$request->slurp_image->getClientOriginalExtension();   
        $product->slurp_image = $imageName; 
        $file->move('images/', $imageName); 
       }  

//  dd($product->product_image); 
//  dd($product->feature_image); 
//  dd($product->slurp_image); 
     $product->save(); 
    } 

當我DD()的$product->product_image$product->feature_image$product->slurp_image我看到不同的不同的文件名,但後存儲到數據庫中,我看到了存儲到數據庫中同一個文件不同的領域。 有人幫忙找出可能的解決方案嗎?

回答

0

當你一次上傳多個圖像時,你會傳遞一組圖像。

這是我的控制器功能看起來像以前這樣做。

public function multiple_upload() { 
    // get the files 
    $files = Input::file('images'); 
    // counting of uploaded images 
    $file_count = count($files); 
    // start count how many uploaded 
    $uploadcount = 0; 

    foreach ($files as $file) { 
    $rules = array('file' => 'required'); //'required|mimes:png,gif,jpeg,txt,pdf,doc' 
    $validator = Validator::make(array('file'=> $file), $rules); 
    if($validator->passes()){ 
     $destinationPath = 'uploads'; // upload folder in public directory 
     $filename = $file->getClientOriginalName(); 
     $upload_success = $file->move($destinationPath, $filename); 
     $uploadcount ++; 

     // save into database 
     $extension = $file->getClientOriginalExtension(); 
     $entry = new Uploads(); 
     $entry->mime = $file->getClientMimeType(); 
     $entry->original_filename = $filename; 
     $entry->filename = $file->getFilename().'.'.$extension; 
     $entry->save(); 
    } 
    } 
    if($uploadcount == $file_count){ 
    Session::flash('success', 'Upload successfully'); 
    return Redirect::to('upload'); 
    } else { 
    return Redirect::to('upload')->withInput()->withErrors($validator); 
    } 
} 

在你的榜樣,我會像它會更喜歡這個

 $product = new Product(); 


    //upload multiple files 
    $files= []; 

    if($request->file('leftimage')) $files[] = $request->file('leftimage'); 
    if($request->file('Middleimage')) $files[] = $request->file('Middleimage'); 
    if($request->file('Rightimage')) $files[] = $request->file('Rightimage'); 

     foreach($files as $file) 
     { 
     if(!empty($file)) 
     { 
      $filename[] = $file->getClientOrginalName(); 
      if(isset($filename)){ 
      $file->move(base_path().'/frontend/sidimage/',end($filename)); 
     } 
    } 
    $product->image1 = $filename[0]; 
    $product->image2 = $filename[1]; 
    $product->image3 = $filename[2]; 
+0

當我實現控制器解決方案我得到了以下錯誤: 'ErrorException在File.php行131: strrpos()期望參數1是字符串,數組給定' – Hola

+0

是github上的代碼嗎?我可以很快看到它。 否則當我有更多的時間很快我會得到代碼在這裏工作 – n31l

+0

https://pastebin.com/rRYyTUBa Patebin在那裏我把控制器代碼 – Hola

相關問題