2017-04-11 8 views
0

Ich möchte mehrere Bilddateien mit unterschiedlichen Feld in der Datenbank wie product_image, feature_image, slurp_image speichern. Ich verwenden Methode folgende Controller die BilddateienLaravel: So speichern Sie mehrere Bilddatei in der Datenbank

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(); 
    } 

zu sparen, wenn i dd() die $product->product_image, $product->feature_image, $product->slurp_image i verschiedene andere Dateinamen sahen, aber nachdem sie in die Datenbank gespeichert Ich sah dieselbe Datei in der Datenbank gespeichert in anderes unterschiedliches Feld. jemand helfen, um herauszufinden, was könnte die Lösung bitte?

Antwort

0

Wenn Sie mehrere Bilder gleichzeitig hochladen, durchlaufen Sie eine Reihe von Bildern.

So hat meine Controller-Funktion ausgesehen, wenn ich das vorher gemacht habe.

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); 
    } 
} 

In Ihrem Beispiel ich Bild würde es wie diese

 $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

mehr wäre, wenn ich Ihre Lösung in der Steuerung zu implementieren bekam ich folgende Fehlermeldung: 'Error in file.php Linie 131: strrpos() erwartet, dass Parameter 1 eine Zeichenkette ist, Array gegeben " – Hola

+0

Ist Ihr Code auf GitHub? Ich kann es mir kurz ansehen. Sonst werde ich den Code für Sie arbeiten hier, wenn ich bald mehr Zeit habe – n31l

+0

https://pastebin.com/rRYyTUBa Patebin, wo ich den Controller-Code gesetzt habe – Hola

Verwandte Themen