Upload Gambar / Image pada Yii Framework
Yii framework menyediakan mekanisme upload image atau gambar. Pada contoh ini gambar akan diupload ke sebuah direktori , misalnya akan diletakan dalam direktori applikasi/images/foto. Pastikan direktori ini sudah diberi izin akses untuk menulis ( write ) .
Beri izin akses direktori :
$chmod 777 aplikasi/images/foto
Misal akan diupload logo dari propinsi ketika form input propinsi :
Berikut kode programnya :
- Kode program pada VIEW : _form.php
echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> </div> <?php $this->endWidget(); ?> </div><!-- form --> [/php]
<div class="form"> <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'propinsi-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,'nama'); ?> <?php echo $form->textField($model,'nama',array('size'=>40,'maxlength'=>40)); ?> <?php echo $form->error($model,'nama'); ?> </div> <div class="row"> <?php echo $form->labelEx($model,'logo'); ?> <?php echo CHtml::fileField('logo_prop,''); ?> <?php echo $form->error($model,'logo'); ?> </div> <div class="row buttons"> <?php</pre> </li> <li></li> <li>Berikut kode program pada Controllernya : 1 ------- public function actionCreate() { $model=new Propinsi; if(isset($_POST['Propinsi'])) { $model->attributes=$_POST['Propinsi']; $gambar = CUploadedFile::getInstanceByName('logo_prop'); if($gambar){ $nama_gambar = $gambar->name; $picture_file->SaveAs(Yii::app()->basePath . '/../images/foto/' . $nama_gambar); $model->logo=$nama_gambar; if($model->save()) { $this->redirect(array('view','id'=>$model->idpropinsi)); } } } $this->render('create',array( 'model'=>$model, )); }
Comment by exralvio on 18 June 2011:
wah, thanks bro. sangat bermanfaat
Comment by p-man on 14 July 2011:
wah, bisa d tampilin controllernya gak??.,
aku ngikut cara ini tapi kok masih error ya….
dan itu juga kayaknya ada yg salah ya di _form.php nya yg line 20 itu gini :
bukannya harusnnya
tapi punyaku masih error, tolong bisa tampilin controllernya gak??
thanks n sorry b4
Comment by p-man on 14 July 2011:
oh, maaf maksud ane bukan controllernya tapi modulenya , maaf
Comment by cangka on 2 August 2011:
Om,, kalo upload imagenya ke database gimana caranya??
Comment by Liverpudlian on 7 September 2011:
- @p-man: di modul tinggal ditambah ini aja :
public $logo_prop;
terus dibagian method rules-nya ditambah:
array(‘image’, ‘file’,
‘types’=>’jpg, gif, png’,
‘maxSize’=>1024 * 1024 * 50, // 50MB
‘tooLarge’=>’The file was larger than 50MB. Please upload a smaller file.’,
),
- @cangka : untuk upload-nya di simpan nama image-nya saja.
misal-nya disimpan di column contoh:logo, sama seperti contoh diatas yg ada pada file controller line 16,
yg berbunyi: $model->logo=$nama_gambar; // menyimpan nama gambar pada logo
Comment by Liverpudlian on 7 September 2011:
Ehh ada yg salah:
dibagian method rules-nya seharusnya:
array(‘logo_prop’, ‘file’,
‘types’=>’jpg, gif, png’,
‘maxSize’=>1024 * 1024 * 50, // 50MB
‘tooLarge’=>’The file was larger than 50MB. Please upload a smaller file.’,
),
Maaf, saya jg manusia sama seperti admin-nya yg lupa ngasih program yg ada pada model-nya. hehe piss min!
Comment by rojulman on 7 September 2011:
thanks edo .. atas koreksinya
Comment by mellmell amelia on 2 March 2012:
maaf gan mau tanya knp punya saya waktu create trus view gga muncul apa2 di gambar tpi gambar uda ke save ke direktori..
trus di databasenya jugga gga muncul pathnya yg gambar
#mmaf msih newbie
Comment by rojulman on 30 May 2012:
berarti save ke databasenya belum sukses, coba di nama element form disamakan dengan nama field didatabase