Jumat, 03 Agustus 2012

thumbnail

Membuat Upload Data Dengan CodeIgniter

Langkah pertama adalah membuat sebuah berkas view dengan nama upload.php, kemudian simpan berkas tersebut dalam sub direktori application/views/file. Salin skrip di bawah  ini pada berkas view tersebut, dimana skrip dibawah akan membuat tampilan HTML seperti gambar diatas.

01
02

Unggah Berkas

03
04echo ($success) ? $success : null ?>
05echo ($error) ? $error : null ?>
06echo form_open_multipart(current_url()) ?>
07
08
Pilih Berkas
09
echo form_upload('file') ?>
   
10
11echo form_submit('upload', 'Unggah Berkas') ?>
12echo form_close() ?>

Perhatikan fungsi form pembuka yang saya gunakan, disana saya menggunakan fungsi form_open_multipart() dibanding fungsi form_open(). Fungsi ini akan membuat atribut tambahan berupa enctype=”multipart/form-data” pada form pembuka yang mengizinkan kita untuk mengunggah berkas.
Langkah selanjutnya adalah membuat sebuah controller dengan nama “file”. Dalam controller tersebut terdapat satu metode dengan nama upload(). Jika aksi unggah dijalankan, maka akan melakukan proses unggah berkas. Jika tidak ada aksi, maka akan menampilkan form unggah. Selain itu, controller ini juga akan melakukan beberapa validasi terhadap berkas yang diunggah, seperti ukuran maksimal, jenis berkas yang diizinkan atau lainnya. Buat sebuah berkas dengan nama file.php pada direktori application/controllers, salin skrip dibawah pada berkas file.php tadi.


01defined('BASEPATH') or exit('No direct script access.');
02
03/**
04 * @author Yugo
05 *
06 * @property CI_Upload $upload
07 * @property CI_Session $session
08 */
09final class File extends CI_Controller {
10
11    private $directory;
12
13    public function __construct() {
14        parent::__construct();
15
16        // buat direktori jika belum ada
17        $this->directory = 'storage/'.date('Y-m/');
18        if( !is_dir($this->directory) ) {
19            mkdir($this->directory, DIR_WRITE_MODE);
20        }
21    }
22
23    public function upload() {
24        $this->load->library(array('upload', 'session'));
25
26        $this->upload->initialize(array(
27            'upload_path' => $this->directory,
28            'allowed_types' => '*',
29            'max_size' => 5000, // 5MB
30            'remove_spaces' => true,
31            'overwrite' => false
32        ));
33
34        if( $_POST AND $this->upload->do_upload('file') ) {
35            $data = $this->upload->data();
36            // print_r($data);
37
38            $this->session->set_flashdata('success', 'Berkas '.$data['file_name'].' berhasil diunggah.');
39            redirect(current_url());
40        }
41        else {
42            $var->success = $this->session->flashdata('success');
43            $var->error = $this->upload->display_errors();
44            $this->load->view('file/upload', $var);
45        }
46    }
47
48}
49
50/* APPPATH/controllers/file.php */

Perhatikan pada metode __construct(), disana terdapat property $directory yang berupa path lengkap lokasi unggah berkas. Direktori ini mengorganisir berkas yang diunggah berdasar tahun dan bulan saat ini. Jika direktori tidak tersedia, maka dibuatlah direktori baru dengan fungsi mkdir(). Argumen kedua pada fungsi mkdir() merupakan mode untuk direktori, apa hanya bisa ditulisi atau dibaca saja. Disana saya melempar argumen berupa konstan yang disediakan oleh CodeIgniter.
Beralih pada metode initialize() pada librari/kelas upload. Disana saya melempar argumen berupa array. Isi dari array tersebut merupakan pengaturan terhadap berkas yang akan kita unggah. Detailnya tidak akan saya jelaskan satu persatu karena kalian dapat membacanya pada dokumentasi librari CodeIgniter.
Selanjutnya metode data() pada librari upload, yang mengembalikan nilai berupa array. Isi array tersebut mengandung beberapa informasi sehubungan dengan berkas yang berhasil kita unggah. Salah satu contoh indeks array yang saya gunakan diatas adalah file_name, berupa nama baru berkas yang kita unggah.
Terakhir, set_flashdata() pada librari/kelas session untuk memberitahukan kepada pengguna bahwa berkas sudah diunggah dan berhasil disimpan di server. Dan, melakukan pengalihan halaman pada tautan yang sama.
Jika tidak ada aksi POST atau aksi unggah berkas gagal karena suatu kondisi, maka akan menampilkan form unggah berkas. Selain itu juga melempar beberapa variabel yang berisi informasi kesalahan (jika ada) dan menampilkan pesan sukses (jika berhasil).

Subscribe by Email

Follow Updates Articles from This Blog via Email

No Comments

Search This Blog

Diberdayakan oleh Blogger.