2017-05-24 12 views
1

私のページでは、複数の画像を選択してアップロードしたいのですが、参考にするために画像名をデータベースに保存しています。私はデータベースに単一の画像をアップロードするのに成功しており、ビューで画像を表示することもできますが、今は複数の画像をアップロードする際に問題があります。codeignitorで複数の画像を使用する方法

public function add_record() 
{ 
    $this->form_validation->set_rules('category', 'category', 'required'); 
    $current_date = date("Y-m-d H:i:s"); 
    $error=''; 

    if($this->form_validation->run()) 
    { 
     $image = ''; 
     if($_FILES['image']['name']) 
     { 
      if (!is_dir('/backend_assets/media/image/')) { 
       mkdir('./backend_assets/media/image/', 0777, TRUE); 

      } 
      $config['upload_path']   = './backend_assets/media/image/'; 
      $config['allowed_types']  = 'gif|jpg|jpeg|png'; 
      $this->load->library('upload', $config); 
      $this->upload->initialize($config);    
      if ($this->upload->do_upload('image')) 
      { 
       $data = $this->upload->data(); 
       $image = $data['file_name']; 

      }else{ 
        $this->session->set_flashdata('error', $this->upload->display_errors()); 
        redirect(base_url('admin/image')); 
      } 

     } 

     $insert_array = array(
           'gl_cat_id' => $this->input->post('category'), 
           'gl_image'=> $image       
          ); 
     if ($this->common_model->add_records('vm_image',$insert_array)) 
      { 
       $id = $this->db->insert_id(); 
       $insert_sco_details = array(
            'sd_ty'=>'vm_image', 
            'sd_ty_id'=>$id, 
            'sd_image'=>$image 
            ); 
       if($this->common_model->publication('vm_image',$id) && $this->common_model->add_records('vm_seo_detail',$insert_sco_details)) 
       { 
        $this->session->set_flashdata('success','Record added successfully'); 
        redirect(base_url('admin/image')); 
       }else{ 
        $this->session->set_flashdata('error','Error while adding record'); 
        redirect(base_url('admin/image')); 
       } 

      }else{ 
       $this->session->set_flashdata('error','Error while adding record'); 
       redirect(base_url('admin/image')); 
      } 

    } 
    $where_array = array('vm_publications.status !=' => 4); 
    $data['users_type'] = $this->common_model->get_records('vm_image_category','','',''); 
    $data['include'] = 'backend/image/add_image'; 
    $this->load->view('backend/container', $data); 
} 

上記のコードではどうすればできますか?

+0

[CodeIgniterのとアップロード複数の画像(https://stackoverflow.com/questions/33017753/upload-multiple-images-with-codeigniter) – gabe3886

+0

ない他の溶液を得ることができるの可能重複.. –

+0

表示されたコードは、1つのファイルの処理とアップロードコードしか持っていません。複数のファイルを扱うために何を試しましたか?重複しないようにしますか? – gabe3886

答えて

1
$current_date = date("Y-m-d H:i:s"); 
    $error = ''; 
    $image = ''; 
    if(isset($_FILES['image']['name'])) 
    { 
     //print_r($_FILES); 
     $id = base64_decode($this->input->post('gid')); 

     $filesCount = count($_FILES['image']['name']); 
     $inserted = ''; 
     for($i = 0; $i < $filesCount; $i++) 
     { 
      $_FILES['userFile']['name'] = $_FILES['image']['name'][$i]; 
      $_FILES['userFile']['type'] = $_FILES['image']['type'][$i]; 
      $_FILES['userFile']['tmp_name'] = $_FILES['image']['tmp_name'][$i]; 
      $_FILES['userFile']['error'] = $_FILES['image']['error'][$i]; 
      $_FILES['userFile']['size'] = $_FILES['image']['size'][$i]; 

      $config['upload_path']   = './backend_assets/media/image/'; 
      $config['allowed_types']  = 'gif|jpg|png'; 

      $this->load->library('upload', $config); 
      $this->upload->initialize($config); 
      if($this->upload->do_upload('userFile')) 
      { 
       $fileData = $this->upload->data(); 
       $image = $fileData['file_name']; 
       $insert_array = array(
             'gl_cat_id' => $this->input->post('category'), 
             'gl_image'=> $image       
            ); 

      if ($this->common_model->add_records('vm_image',$insert_array)) 
      { 
       $id = $this->db->insert_id(); 
       $insert_sco_details = array(
              'sd_ty'=>'vm_image', 
              'sd_ty_id'=>$id, 
              'sd_image'=>$image 
              ); 
       if($this->common_model->publication('vm_image',$id) && $this->common_model->add_records('vm_seo_detail',$insert_sco_details)) 
       { 
        $inserted++; 
       } 

      } 
     } 
     } 
     if($inserted == $filesCount) 
     { $this->session->set_flashdata('success','Images uploaded successfully'); 
       redirect(base_url('adminp8AamG6ueHFNGAAp/image')); 
     }else{ 
      $this->session->set_flashdata('error','Error while adding record'); 
      redirect(base_url('adminp8AamG6ueHFNGAAp/image')); 
     } 
    } 
    $where_array = array('vm_publications.status !=' => 4); 
    $data['users_type'] = $this->common_model->get_records('vm_image_category','','',''); 
    $data['include'] = 'backend/image/add_image'; 
    $this->load->view('backend/container', $data); 
+0

これは働いてくれてありがとう.. –

-1

まず、$_FILES変数の出力をデバッグします。これはアップロードされているファイルの配列を与えるはずです。それぞれを個別に扱うためにそれらをループします。

foreach ($_FILES as $file) { // do some file processing on the $file object instead of $_FILES object. // example: instead of using 'if($_FILES['image']['name'])' // use: 'if($file['image']['name'])' }

あなたはCIのアップロードクラスを使用する場合は、ここではそのドキュメントをチェックアウト:コードの下https://www.codeigniter.com/userguide3/libraries/file_uploading.html

0

試みます()関数をadd_record。それはあなたに役立つでしょう。数日前、私は

$files = $_FILES; 
     $count = count($_FILES['image']['name']); 
     for($i=0; $i<$count; $i++) { 
       $_FILES['image']['name']= $files['image']['name'][$i]; 
       $_FILES['image']['type']= $files['image']['type'][$i]; 
       $_FILES['image']['tmp_name']= $files['image']['tmp_name'][$i]; 
       $_FILES['image']['error']= $files['image']['error'][$i]; 
       $_FILES['image']['size']= $files['image']['size'][$i]; 
       $this->upload->initialize($this->set_upload_options());//function defination below 
       $this->upload->do_upload('image'); 
       $upload_data = $this->upload->data(); 
       $name_array[] = $upload_data['file_name']; 
       $fileName = $upload_data['file_name']; 
       $images[] = $fileName; 

     } 

     $fileName = $images; 

同じ問題に直面し、同じコントローラでset_upload_options機能でファイルアップロードの設定を設定しています。

function set_upload_options() { 
     $config = array(); 
     $config['upload_path'] = PATH; 
     $config['remove_spaces']=TRUE; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     $config['max_size'] = '78000'; 
     return $config; 
} 
関連する問題