codeigniter multiple file upload code example
Example 1: upload multiple files in codeigniter
private function upload_files($path, $title, $files)
{
$config = array(
'upload_path' => $path,
'allowed_types' => 'jpg|gif|png',
'overwrite' => 1,
);
$this->load->library('upload', $config);
$images = array();
foreach ($files['name'] as $key => $image) {
$_FILES['images[]']['name']= $files['name'][$key];
$_FILES['images[]']['type']= $files['type'][$key];
$_FILES['images[]']['tmp_name']= $files['tmp_name'][$key];
$_FILES['images[]']['error']= $files['error'][$key];
$_FILES['images[]']['size']= $files['size'][$key];
$fileName = $title .'_'. $image;
$images[] = $fileName;
$config['file_name'] = $fileName;
$this->upload->initialize($config);
if ($this->upload->do_upload('images[]')) {
$this->upload->data();
} else {
return false;
}
}
return $images;
}
Example 2: how to upload two files on same form different path in codeigniter
if($this->input->post('Submit')){
//-----------Image File Section Start Here -----------//
$config['upload_path'] = './uploads/'; // Directory
$config['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed
$config['max_size'] = '30720'; //Max Size
$config['encrypt_name'] = TRUE; // For unique image name at a time
$this->load->library('upload', $config); //File Uploading library
$this->upload->do_upload('userfile'); // input name which have to upload
$video_upload=$this->upload->data(); //variable which store the path
//--------------End of Image File Section------------------------//
//---------Thumbnail Image Upload Section Start Here -----------//
$config2['upload_path'] = './thumb/'; // Directory
$config2['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed
$config2['max_size'] = '30720'; //Max Size
$config2['encrypt_name'] = TRUE; // For unique image name at a time
$this->upload->initialize($config2); //we can not use upload library again and again it will not initialize again and again so thats why i have used initialize
$this->upload->do_upload('txt_thumb'); // File Name
$thumbnail_upload=$this->upload->data(); // store the name of the file
//--------End of Thumbnail Upload Section-----------//
$date=date("d-m-Y"); // Store current date in variable
// Here the database query to insert
$data = array(
'parent_id'=> $this->input->post('txt_parent'),
'cat_id' => $this->input->post('txt_category'),
'title'=> $this->input->post('txt_title'),
'status' => $this->input->post('txt_status'),
'featured' => $thumbnail_upload['file_name'],
'image' => $video_upload['file_name'],
'time'=>$date
);
$sql_ins= $this->Insimage->insertimage($data);
if($sql_ins)
{
$data['Success'] = "Image has been succesfully inserted!!";
}
Example 3: Multiple image upload with CodeIgniter
views
---------
<?php echo validation_errors();?>
<?php echo form_open_multipart('pages/multiple_files');?>
<p><input type="file" multiple="multiple" name="image_name[]" class="form-control" /></p>
<input type="submit" class="btn btn-success btn-block"/>
</form>
Controller
----------
public function multiple_files(){
$this->load->library('upload');
$image = array();
$ImageCount = count($_FILES['image_name']['name']);
for($i = 0; $i < $ImageCount; $i++){
$_FILES['file']['name'] = $_FILES['image_name']['name'][$i];
$_FILES['file']['type'] = $_FILES['image_name']['type'][$i];
$_FILES['file']['tmp_name'] = $_FILES['image_name']['tmp_name'][$i];
$_FILES['file']['error'] = $_FILES['image_name']['error'][$i];
$_FILES['file']['size'] = $_FILES['image_name']['size'][$i];
// File upload configuration
$uploadPath = './assets/images/profiles/';
$config['upload_path'] = $uploadPath;
$config['allowed_types'] = 'jpg|jpeg|png|gif';
// Load and initialize upload library
$this->load->library('upload', $config);
$this->upload->initialize($config);
// Upload file to server
if($this->upload->do_upload('file')){
// Uploaded file data
$imageData = $this->upload->data();
$uploadImgData[$i]['image_name'] = $imageData['file_name'];
}
}
if(!empty($uploadImgData)){
// Insert files data into the database
$this->pages_model->multiple_images($uploadImgData);
}
}
Model
---------
public function multiple_images($image = array()){
return $this->db->insert_batch('profile_images',$image);
}