2015-10-09 22 views
2

我想使用codeigniter上傳多個文件。如何使用codeigniter上傳多個文件

我有兩種類型的圖像beforeimage和殘像。上傳每張圖片後,我在數據庫中輸入。

我也在創建縮略圖。爲了簡化它,我創建了一個單獨的函數,但它不起作用。這個邏輯適用於單張圖片上傳。

的Html

控制器

foreach($_FILES["beforepicture"]['name'] as $key=>$files){ 
         //if(isset($_FILES["beforepicture"]['name']) && $_FILES["beforepicture"]['name'] != ''){ 
         $imagestatus = $this->upload_images($files,'beforepicture'); 
         if(isset($imagestatus['name'])){ 
          $inputdata = array('image' => $imagestatus['name'], 
           'lead_id' =>$inserted_id, 
           'user_id'=>$this->session->userdata['userdata']['userid'], 
           'when'=>'before'); 
          $this->common_model->save('lead_images',$inputdata); 
         //} 
         } 
        } 

function upload_images($data = NULL,$inputname=NULL){ 
     if($data){ 
      $this->load->library('image_lib'); 
       // echo '<pre>'; 
        // print_r($_FILES); 
       $new_name = time().$data; 
       $config = array(
       'upload_path' => getcwd()."/assets/themes/default/avatars/", 
       'allowed_types' => "gif|jpg|png|jpeg", 
       'overwrite' => TRUE, 
       'max_size' => "2048000", // Can be set to particular file size , here it is 2 MB(2048 Kb) 
       // 'max_height' => "768", 
       //'max_width' => "1024", 
       'file_name' => $new_name 
       ); 
       $this->load->library('upload', $config); 
       $this->upload->initialize($config); 
       //$this->upload->initialize($config); 
       if($this->upload->do_upload($inputname)) 
       { 
       $image_data = $this->upload->data(); 
       //thumb1 
       $config = array(
        'source_image'  => $image_data['full_path'], //path to the uploaded image 
        'new_image'   => getcwd()."/assets/themes/default/avatars/thumb", //path to 
        'maintain_ratio' => true, 
        'width'    => 180, 
        'height'   => 200 
        ); 
       $this->image_lib->initialize($config); 
       $this->image_lib->resize(); 
       $message = array('name' => $image_data['file_name']); 
       }else 
       { 
        //echo $this->upload->display_errors(); die; 
        $message = array('failed' => $this->upload->display_errors()); 
       } 

       return $message; 
     } 
    } 

我嘗試,但未能

+0

請添加表單代碼以及 –

回答

0

試試這個

$files = $_FILES; 
         $cpt = count($_FILES['beforepicture']['name']); 
         for($i=0; $i<$cpt; $i++){ 
          $_FILES['beforepicture']['name']= $files['beforepicture']['name'][$i]; 
          $_FILES['beforepicture']['type']= $files['beforepicture']['type'][$i]; 
          $_FILES['beforepicture']['tmp_name']= $files['beforepicture']['tmp_name'][$i]; 
          $_FILES['beforepicture']['error']= $files['beforepicture']['error'][$i]; 
          $_FILES['beforepicture']['size']= $files['beforepicture']['size'][$i]; 
         $imagestatus = $this->upload_images($_FILES["beforepicture"]['name'],'beforepicture'); 
         if(isset($imagestatus['name'])){ 
          $inputdata = array('image' => $imagestatus['name'], 
           'lead_id' =>$inserted_id, 
           'user_id'=>$this->session->userdata['userdata']['userid'], 
           'when'=>'before'); 
          $this->common_model->save('lead_images',$inputdata); 
         } 
        } 
+0

以上都是解決方案,但這已根據要求進行了修改。 –

1

試試這個

<?php 
    class My_Controller extends CI_Controller { 
    public function __construct() { 
    parent::__construct(); 
$this->load->library('upload'); 
} 
       $files = $_FILES; 
       $cpt = count($_FILES['userfile']['name']); 
       for($i=0; $i<$cpt; $i++) 
       { 
       $_FILES['userfile']['name']= $files['userfile']['name'][$i]; 
       $_FILES['userfile']['type']= $files['userfile']['type'][$i]; 
       $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i]; 
       $_FILES['userfile']['error']= $files['userfile']['error'][$i]; 
       $_FILES['userfile']['size']= $files['userfile']['size'][$i]; 
       $this->upload->initialize($this->set_upload_options()); 
       $this->upload->do_upload(); 
       $fileName = $_FILES['userfile']['name']; 
       $images[] = $fileName; 
} 
    $fileName = implode(',',$images); 
    $this->my_model->upload_image($fileName); 
} 
private function set_upload_options() 
    { 
    // upload an image options 
     $config = array(); 
     $config['upload_path'] = './upload/'; //give the path to upload the image in folder 
     $config['allowed_types'] = 'gif|jpg|png'; 
      $config['max_size'] = '0'; 
     $config['overwrite'] = FALSE; 
    return $config; 
    } 
} 

欲瞭解更多如何上傳笨多個文件試試這個教程:http://w3code.in/2015/09/upload-file-using-codeigniter/