Upload
Class upload Panada memiliki feature-feature lengkap yang bisa langsung digunakan di dalam aplikasi Anda. Feature ini antara lain:
Inisialisasi
Sebelum digunakan, class upload harus diinisialisasi terlebih dahulu.
$this->upload = new Library_upload();
Method now()
Method untuk melakukan proses upload adalah:
bool $this->upload->now( array $_FILES['my_file'] );
Properties get_file_info
Untuk mendapatkan data yang sudah berhasil diupload bisa menggunakan properties:
array $this->upload->get_file_info;
Informasi yang diberikan:
| Array Key | Deskripsi | Contoh |
|---|---|---|
| extension | Ekstensi dari file yang diupload. | jpg |
| name | Nama file yang diupload. | panada_benchmark.jpg |
| folder | Lokasi folder file yang diupload. | uploads |
| mime | Tipe Mime file yang diupload. | image/jpeg |
Contoh output array-nya:
Array ( [extension] => jpg [name] => panada_benchmark.jpg [folder] => uploads [mime] => image/jpeg )
Basic
Sebelumnya, Anda harus menentukan lokasi folder tujuan upload. Yang harus diperhatikan adalah chmod dari folder tersebut harus 777.
$this->upload->folder_location = 'uploads';
Anda membutuhkan sebuah form html untuk melakukan upload. Berikut contoh form di dalam file form_upload.php yang kemudian disimpan di folder apps/view
Berikut adalah contoh controller untuk menangani proses upload:
Auto Rename
Jika file yang sudah berhasil diupload dan ingin diberi nama baru secara otomatis, gunakan opsi $this->upload->auto_rename
$this->upload->auto_rename = true;
Auto rename menggunakan fungsi time() dan rand() dari PHP. Contoh file yang berhasil diupload adalah 12799728631007713596.jpg.
Anda juga bisa menentukan sendiri nama file yang sudah berhasil terupload dengan menggunakan opsi:
$this->upload->set_file_name = 'new_file_name';
Contoh file yang berhasil terupload adalah new_file_name.jpg.
Buat Sub-folder Otomatis
Jika Anda ingin membuat sub-folder secara otomatis di dalam folder upload, maka gunakan opsi:
$this->upload->auto_create_folder = true;
Struktur folder yang dibuat berdasarkan tahun_ini/bulan_ini, contohya adalah:
my_folders/2010/07/12799728631007713596.jpg
Validasi Tipe File
Untuk melakukan validasi tipe file, gunakan opsi:
$this->upload->permitted_file_type = 'gif|php|jpg|pdf';
Gunakan tanda | untuk memisahkan setiap jenis file. Pada contoh di atas maka file yang diijinkan diupload adalah file dengan ekstensi gif, php, jpg, dan pdf.
Validasi Ukuran File
Untuk melakukan validasi ukuran file, gunakan opsi:
$this->upload->maximum_size = 1000000;
Isikan opsi maximum_size dengan nilai dalam satuan byte. Untuk contoh di atas file yang bisa dipuload maksimal berukuran 1MB.
Error Message
Untuk menangani pesan error dalam proses upload, Panada mengikuti pesan error PHP untuk variable $_FILES yang ada di halaman http://php.net/manual/en/features.file-upload.errors.php ditambah dengan beberapa pesan error tambahan.
Berikut adalah daftar pesan error dan ID-nya:
| ID | Message |
|---|---|
| 1 | File upload failed due to unknown error. |
| 2 | No folder located. Please define the folder location. |
| 3 | The uploaded file exceeds the upload_max_filesize directive in php.ini. |
| 4 | The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form. |