2017-04-11 1 views
0

product_image, feature_image, slurp_image과 같이 데이터베이스에 다른 필드가있는 여러 이미지 파일을 저장하려고합니다. 내가이 $product->product_image, $product->feature_image$product->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(); 
    } 

을 저장하려면 다음 컨트롤러 방법을 사용하지만, 데이터베이스에 저장 한 후 난에 데이터베이스에 저장된 같은 파일을 보았다 다른 다른 필드입니다. 해결 방법이 무엇인지 알아내는 데 도움이되는 사람은 누구입니까?

답변

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

같은 것 이미지를 거라고 나는 다음과 같은 오류가 발생했습니다 : 'File.php 라인 (131)에 ErrorException : strrpos()는 매개 변수 1이 문자열이고 배열이 주어진 것으로 예상합니다. – Hola

+0

코드가 github에 있습니까? 나는 당신을 위해 곧 그것을 볼 수 있습니다. 그렇지 않으면 곧 더 많은 시간이있을 때 여기에서 코드가 작동합니다. – n31l

+0

https://pastebin.com/rRYyTUBa Patebin 어디에서 컨트롤러 코드를 입력 했습니까? – Hola

관련 문제