Yii Uploader : Upload File Sederhana

9 Nov 2012


Upload file merupakan suatu sistem pengiriman berkas dari komputer klien ke remote server. Remote server bisa berada pada areal lokal ataupun jaringan publik (Internet). Tujuan upload file ada bermacam. Mulai dari ekstraksi informasi, hingga berbagai file (seperti layanan filesharing ataupun facebook). Pada postingan ini kita akan membahas bagaimana cara membuat sistem upload file sederhana. Tentunya dengan Yii. Are You ready?

Buat dahulu kontroler upload
protected/controllers/UploadController.php
<?php
/*ini adalah sebagian kode untuk membuat file
sesuaikan dengan kontroler default*/
...
public function actionCreate() {
    $model=new UploadForm;
    if(isset($_POST['UploadForm'])){
       $model->attributes=$_POST['UploadForm'];
       if($model->validate()){
           $model->berkas = CUploadedFile::getInstance($model, 'berkas');
           $model->berkas->saveAs(Yii::app()->basePath . '/../images/'.$model->berkas->getName());
           Yii::app()->user->setFlash('upload','File '.$model->berkas->getName().' telah terupload.');
           $this->refresh();
       }
    }
    $this->render('create',array(
  'model'=>$model,
 ));
}

Buat model upload dimana diturunkan dari CFormModel. Karena tidak menggunakan akses database maka ActiveRecord tidak bisa digunakan.
protected/models/UploadForm.php
<?php
class UploadForm extends CFormModel{
public $berkas;
public function rules(){
 return array(
   array('berkas','file',
    'types'=>'jpg, gif, png', //tipe file gambar
    'maxSize'=>10*1024*1024, // max:10MB
   ),
  );
 }
 
 public function attributeLabels()
 {
  return array(
   'berkas'=>'Berkas',
  );
 }
}
Buat view create di direktori protected/views/upload/create.php. create.php digunakan sebagai interface upload file.
<?php if(Yii::app()->user->hasFlash('upload')): ?>

<div class="flash-success">
 <?php echo Yii::app()->user->getFlash('upload'); ?>
</div>
<?php endif;?>
<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
 'id'=>'upload-form',
 'enableAjaxValidation'=>false,
 'htmlOptions'=>array('enctype'=>'multipart/form-data'),
)); ?>

 <p class="note">Fields with <span class="required">*</span> are required.</p>

 <?php echo $form->errorSummary($model); ?>

 <div class="row">
  <?php echo $form->labelEx($model,'berkas'); ?>
  <?php echo $form->fileField($model,'berkas'); ?>
  <?php echo $form->error($model,'berkas'); ?>
 </div>

 <div class="row buttons">
  <?php echo CHtml::submitButton('Simpan'); ?>
 </div>

<?php $this->endWidget(); ?>

</div>
NB:
Yii::app()->basePath . '/../images/ adalah Direktori di atas Yii Basepath, karena Yii basepath adalah protected
Sistem upload file dengan yii telah berhasil dibuat!

No comments:

Post a Comment