CREATE TABLE `files` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`file_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`uploaded_on` datetime NOT NULL,
`status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL DEFAULT '1' COMMENT '1=Active, 0=Inactive',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Upload_Files extends CI_Controller {
function __construct() {
parent::__construct();
/* Load file model */
$this->load->model('file');
}
function index(){
$data = array();
$errorUploadType = $statusMsg = '';
/* If file upload form submitted */
if($this->input->post('fileSubmit')){
/* If files are selected to upload */
if(!empty($_FILES['files']['name']) && count(array_filter($_FILES['files']['name'])) > 0){
$filesCount = count($_FILES['files']['name']);
for($i = 0; $i < $filesCount; $i++){
$_FILES['file']['name'] = $_FILES['files']['name'][$i];
$_FILES['file']['type'] = $_FILES['files']['type'][$i];
$_FILES['file']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
$_FILES['file']['error'] = $_FILES['files']['error'][$i];
$_FILES['file']['size'] = $_FILES['files']['size'][$i];
/* File upload configuration */
$uploadPath = 'uploads/files/';
$config['upload_path'] = $uploadPath;
$config['allowed_types'] = 'jpg|jpeg|png|gif';
/* $config['max_size'] = '100'; */
/* $config['max_width'] = '1024'; */
/* $config['max_height'] = '768'; */
/* 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 */
$fileData = $this->upload->data();
$uploadData[$i]['file_name'] = $fileData['file_name'];
$uploadData[$i]['uploaded_on'] = date("Y-m-d H:i:s");
}else{
$errorUploadType .= $_FILES['file']['name'].' | ';
}
}
$errorUploadType = !empty($errorUploadType)?'<br/>File Type Error: '.trim($errorUploadType, ' | '):'';
if(!empty($uploadData)){
/* Insert files data into the database */
$insert = $this->file->insert($uploadData);
/* Upload status message */
$statusMsg = $insert?'Files uploaded successfully!'.$errorUploadType:'Some problem occurred, please try again.';
}else{
$statusMsg = "Sorry, there was an error uploading your file.".$errorUploadType;
}
}else{
$statusMsg = 'Please select image files to upload.';
}
}
/* Get files data from the database */
$data['files'] = $this->file->getRows();
/* Pass the files data to view */
$data['statusMsg'] = $statusMsg;
$this->load->view('upload_files/index', $data);
}
}
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class File extends CI_Model{
function __construct() {
$this->tableName = 'files';
}
/*
* Fetch files data from the database
* @param id returns a single record if specified, otherwise all records
*/
public function getRows($id = ''){
$this->db->select('id,file_name,uploaded_on');
$this->db->from('files');
if($id){
$this->db->where('id',$id);
$query = $this->db->get();
$result = $query->row_array();
}else{
$this->db->order_by('uploaded_on','desc');
$query = $this->db->get();
$result = $query->result_array();
}
return !empty($result)?$result:false;
}
/*
* Insert file data into the database
* @param array the data for inserting into the table
*/
public function insert($data = array()){
$insert = $this->db->insert_batch('files',$data);
return $insert?true:false;
}
}
<!-- Display status message -->
<?php echo !empty($statusMsg)?'<p class="status-msg">'.$statusMsg.'</p>':''; ?>
<!-- File upload form -->
<form method="post" action="" enctype="multipart/form-data">
<div class="form-group">
<label>Choose Files</label>
<input type="file" class="form-control" name="files[]" multiple/>
</div>
<div class="form-group">
<input class="form-control" type="submit" name="fileSubmit" value="UPLOAD"/>
</div>
</form>