Panada Framework 1.0.0 Documentation

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 Resources\Upload;

Method now()

Method untuk melakukan proses upload adalah:

bool $this->upload->now( array $_FILES['my_file'] );

getFileInfo()

Untuk mendapatkan data yang sudah berhasil diupload bisa menggunakan method:

array $this->upload->getFileInfo();

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->setOption('folderLocation', 'uploads');

Anda membutuhkan sebuah form html untuk melakukan upload. Berikut contoh form di dalam file form_upload.php yang kemudian disimpan di folder app/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 autoRename

$this->upload->setOption('autoRename', 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->setOption('setFileName', '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->setOption('folderLocation', 'uploads/'.date('Y').'/'.date('m').'/');

Struktur folder yang dibuat berdasarkan tahun_ini/bulan_ini, contohya adalah:

uploads/2010/07/12799728631007713596.jpg

Validasi Tipe File

Untuk melakukan validasi tipe file, gunakan opsi:

$this->upload->setOption('permittedFileType', '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->setOption('maximumSize', 1000000);

Isikan opsi maximumSize 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.
5 The uploaded file was only partially uploaded.
6 No file was uploaded.
7 Missing a temporary folder.
8 Failed to write file to disk.
9 File upload stopped by extension.
10 Folder you've defined does not exist.
11 Can't create new folder in your defined folder.
12 Uploaded file not permitted.
13 The uploaded file exceeds the maximum size.
14 File uploaded, but editing image has failed with the following error(s):
15 Folder you specified not writeable.

Anda bisa melakukan modifikasi error-error ini dengan cara memberikan nilai baru pada pada method $this->upload->setErrorMessage(), contohnya:

Image Editing

Jika file yang diupload berupa image, Panada menggunakan class image untuk melakukan pengeditan. Panada secara otomatis akan me-load class tersebut sehingga Anda tidak perlu lagi melakukannya secara manual.

Anda hanya perlu menambahkan opsi:

$this->upload->setOption( 'editImage', array() );

Nilai array dari opsi edit_image mengacu pada library image.

Berikut contoh melakukan uplaod image sekaligus resize dengan lebar maksimal 200:

$this->upload->setOption( 'editImage', array('editType' => PIMG_RESIZE, 'resizeWidth' => 200) );

Berikut contoh uplad image, resize dengan ukuran 400 dan sekaligus crop dengan ukuran 100 X 100:

$this->upload->setOption( 'editImage', array('editType' => PIMG_RESIZE_CROP, 'resizeWidth' => 400, 'cropWidth' => 100, 'cropHeight' => 100) );

Berikut melakukan uplad image, resize dengan ukuran 400, crop dengan ukuran 100 X 100, simpan dengan nama file cropped:

$this->upload->setOption( 'editImage', array('editType' => PIMG_RESIZE_CROP, 'resizeWidth' => 400, 'cropWidth' => 100, 'cropHeight' => 100, 'newFileName' => 'cropped') );

Sample

Berikut adalah contoh controller upload dilengkapi dengan beberapa opsi:

Diskusi