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 :

  1. Kode program pada VIEW : _form.php
    echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
    	</div>
    
    <?php $this->endWidget(); ?>
    
    </div><!-- form -->
    [/php]
    
    &lt;div class=&quot;form&quot;&gt;
    &lt;?php $form=$this-&gt;beginWidget('CActiveForm', array(
    	'id'=&gt;'propinsi-form',
    	'enableAjaxValidation'=&gt;false,
    		'htmlOptions'=&gt;array('enctype'=&gt;'multipart/form-data'),
    )); ?&gt;
    
    	&lt;p class=&quot;note&quot;&gt;Fields with &lt;span class=&quot;required&quot;&gt;*&lt;/span&gt; are required.&lt;/p&gt;
    
    	&lt;?php echo $form-&gt;errorSummary($model); ?&gt;
    
    	&lt;div class=&quot;row&quot;&gt;
    		&lt;?php echo $form-&gt;labelEx($model,'nama'); ?&gt;
    		&lt;?php echo $form-&gt;textField($model,'nama',array('size'=&gt;40,'maxlength'=&gt;40)); ?&gt;
    		&lt;?php echo $form-&gt;error($model,'nama'); ?&gt;
    	&lt;/div&gt;
    
    	&lt;div class=&quot;row&quot;&gt;
    		&lt;?php echo $form-&gt;labelEx($model,'logo'); ?&gt;
    		&lt;?php echo CHtml::fileField('logo_prop,''); ?&gt;
    		&lt;?php echo $form-&gt;error($model,'logo'); ?&gt;
    	&lt;/div&gt;
    &lt;div class=&quot;row buttons&quot;&gt;
    		&lt;?php&lt;/pre&gt;
    &lt;/li&gt;
    	&lt;li&gt;&lt;/li&gt;
    	&lt;li&gt;Berikut kode program pada Controllernya :
    1
    -------
    public function actionCreate()
    	{
    		$model=new Propinsi;
    		if(isset($_POST['Propinsi']))
    		{
    			$model-&gt;attributes=$_POST['Propinsi'];
    
    			$gambar = CUploadedFile::getInstanceByName('logo_prop');
    
    			if($gambar){
    
           			 $nama_gambar = $gambar-&gt;name;
            		 $picture_file-&gt;SaveAs(Yii::app()-&gt;basePath . '/../images/foto/' . $nama_gambar);
    
    		         $model-&gt;logo=$nama_gambar;
    
    			if($model-&gt;save()) {
    				$this-&gt;redirect(array('view','id'=&gt;$model-&gt;idpropinsi));
    			 }
    			}
    		}
    
    		$this-&gt;render('create',array(
    			'model'=&gt;$model,
    		));
    	}
    

There Are 9 Responses So Far. »

  1. wah, thanks bro. sangat bermanfaat

  2. 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

  3. oh, maaf maksud ane bukan controllernya tapi modulenya , maaf

  4. Om,, kalo upload imagenya ke database gimana caranya??

  5. - @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

  6. 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! :)

  7. thanks edo .. atas koreksinya

  8. 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

  9. berarti save ke databasenya belum sukses, coba di nama element form disamakan dengan nama field didatabase

Post a Response