Upload dan Download File dengan Codeigniter

Upload
Upload adalah proses transmisi sebuah file dari sebuah komputer ke sistem komputer yang lainnya dengan arah yang berkebalikan dengan download. Dari internet user dapat melakunan proses upload dimana user mengirimkan file ke komputer lain yang memintanya.

Download
Download adalah proses transmisi sebuah file dari sebuah sistem komputer ke sistem komputer yang laiinnya. Dari internet, user yang melakukan proses download adalah proses dimana users meminta/request sebuah file dari sebuah komputer lain (website, server, atau lainnya) dan menerimanya.

Pada proses kali ini saya akan menjelaskan bagaimana cara Upload dan Download sebuah file menggunakan Framework Codeigniter.

Buat sebuah database dengan test_upload. Kemudian buat lah struktur tabel sperti berikut:
CREATE TABLE IF NOT EXISTS `tb_image` (
   `ID_image` int(11) NOT NULL AUTO_INCREMENT,
   `file_name` varchar(50) NOT NULL,
   `file_type` varchar(50) NOT NULL,
   `file_path` varchar(50) NOT NULL,
   `full_path` varchar(100) NOT NULL,
   `raw_name` varchar(50) NOT NULL,
   `orig_name` varchar(50) NOT NULL,
   `client_name` varchar(50) NOT NULL,
   `file_ext` varchar(50) NOT NULL,
   `file_size` varchar(10) NOT NULL,
   `image_width` varchar(10) NOT NULL,
   `image_height` varchar(10) NOT NULL,
   `image_type` varchar(10) NOT NULL,
   `image_size_str` varchar(50) NOT NULL,
   PRIMARY KEY (`ID_image`)
);
Jika database dan tabel nya sudah dibuat maka selanjutnya buka file database.php di ./application/config/database.php. Dan atur konfigurasi nya seperti berikut:
$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
   'dsn' => '',
   'hostname' => 'localhost',
   'username' => 'root',
   'password' => '',
   'database' => 'test_upload',
   'dbdriver' => 'mysqli',
   'dbprefix' => '',
   'pconnect' => FALSE,
   'db_debug' => (ENVIRONMENT !== 'production'),
   'cache_on' => FALSE,
   'cachedir' => '',
   'char_set' => 'utf8',
   'dbcollat' => 'utf8_general_ci',
   'swap_pre' => '',
   'encrypt' => FALSE,
   'compress' => FALSE,
   'stricton' => FALSE,
   'failover' => array(),
   'save_queries' => TRUE
);
Buka file autoload.php di ./application/config/autoload.php. Dan atur seperti berikut ini:
$autoload['libraries'] = array(
   'database',
   'form_validation',
   'session'
);

$autoload['helper'] = array(
   'url',
   'html',
   'download'
);
Buka file config.php di ./application/config/config.php. Dan atur seperti berikut ini:
$config['base_url'] = 'http://localhost/upload/'; // harus sesuai dengan root folder project Anda
Dan kemudian buka file routes.php di ./application/config/routes.php. Dan atur seperti berikut ini:
$route['default_controller'] = 'upload';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
Buat sebuah file controller baru dengan nama upload.php di ./application/controllers/. Dan ketikkan sintak berikut:
<?php
class Upload extends CI_Controller {
 
 public function __construct() {
   parent::__construct();
 }

 public function index() {
   $config = array(
     'upload_path' => 'upload/',
     'allowed_types' => 'gif|jpg|png|', // |extensi lainnya
     'max_size' => '0',
     //'encrypt_name' => true // meng-enkripsi nama file
   );
   $this->load->library('upload', $config);
 
   if ($this->upload->do_upload('file_name')) {
     $data = $this->upload->data();
 
     $query = array(
       'file_name' => $data['file_name'],
       'file_type' => $data['file_type'],
       'file_path' => $data['file_path'],
       'full_path' => $data['full_path'],
       'raw_name' => $data['raw_name'],
       'orig_name' => $data['orig_name'],
       'client_name' => $data['client_name'],
       'file_ext' => $data['file_ext'],
       'file_size' => $data['file_size'],
       'image_width' => $data['image_width'],
       'image_height' => $data['image_height'],
       'image_type' => $data['image_type'],
       'image_size_str' => $data['image_size_str']
     );
     $this->db->insert('tb_image', $query);
     $this->session->set_flashdata('msg', 'File berhasil di input!');
     redirect(site_url());
   }

   $data['result'] = $this->db->get('tb_image')->result();
   $this->load->view('upload_view', $data);
 }

 public function download_file($str) {
   force_download('./upload/'.$str, null);
 }
 
}
Buat sebuah file baru dengan upload_view di ./application/views/. Dan ketikkan sintak berikut ini:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Upload dan Download</title>
</head>
<body>
<?php
echo $this->session->flashdata('msg');
 
echo form_open_multipart();
echo form_upload('file_name');
echo form_submit('upload', 'Upload');
echo form_close();
?>
 
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
  <tr>
  <td></td>
  <th align="left">File Name</th>
  <th align="left">File Type</th>
  <th align="left">Full Path</th>
  <th align="left">File Size</th>
  </tr>

  <?php
  foreach ($result as $data) {
    echo '<tr>';
    echo '<td>'.img(array('src' => 'upload/'.$data->file_name, 'width' => '80', 'height' => '50')).'</td>';
    echo '<td>'.$data->file_name.'</td>';
    echo '<td>'.$data->file_type.'</td>';
    echo '<td>'.$data->full_path.'</td>';
    echo '<td>'.$data->file_size.'</td>';
    echo '<td>'.anchor('upload/download_file/'.$data->file_name, 'Download').'</td>';
    echo '</tr>';
  }
  ?>
</table>
</body>
</html>
Dan terakhir buat lah sebuah folder baru dengan nama upload. Maka akan membentuk stuktur folder sebagai berikut:
./application/
./system/
./upload/
index.php

Share this

Related Posts

Latest