0

Upload gambar di yii2

upload gambar dengan yii2
Tutorial kali kini akan membahas cara meng upload gambar di yii2. Buat yang udah pernah buat script upload di yii1, tutorial ini ngga akan sulit kok. Karena caranya ngga jauh beda sama yii1.

Berikut tutorialnya :

1) BUAT TABEL

Misalkan kita punya tabel dengan nama “images” dengan struktur dibawah ini :
create table images yii 2

2) BUAT MODEL

Langkah selanjutnya kita buat model “Images.php” di frontend/models/. Copy script berikut ini :

<?php
namespace app\models;

class Images extends \yii\db\ActiveRecord
{
	/**
	 * @nama tabel
	 */
	public static function tableName(){
		return 'images';
	}
	
	/**
	 * settingan upload foto
	 */
    public function rules()
    {
        return [
            [['foto'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
        ];
    }
}

Penjelasan :

[['foto'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg']

– skipOnEmpty => false : gambar tidak boleh kosong (harus diisi).
– extensions : jenis gambar yang akan diupload.

3) BUAT CONTROLLER

Buat controllers dengan nama “ImagesController.php” di frontend/controllers/
Copy script berikut :

<?php
namespace frontend\controllers;

use Yii;
use yii\web\Controller;
use app\models\Images;
use yii\web\UploadedFile;

class ImagesController extends Controller
{
	public function actionCreate()
	{
		$model = new Images();
		
        if (Yii::$app->request->isPost) {
			// ambil foto
            $model->foto = UploadedFile::getInstance($model, 'foto');
			
			if ($model->validate()) {
				// upload foto
				$model->foto->saveAs('uploads/' . $model->foto->baseName . '.' . $model->foto->extension);
				
				return 'berhasil mengupload ' . $model->foto->name;
			}else {
				return 'gagal mengupload ' . $model->foto->name;
			}
			          
        }
		
		return $this->render('create', ['model'=>$model]);
	}
}

Penjelasan :

use yii\web\UploadedFile;

Script ini digunakan untuk mendapatkan informasi nama & temporary gambar setelah gambar diupload.

$model->foto->saveAs('uploads/' . $model->foto->baseName . '.' . $model->foto->extension);

Script ini digunakan untuk menyimpan hasil upload ke folder uploads/

4) BUAT VIEW

Buat folder “images” di frontend/views/.
Lalu buat file “create.php” di /frontend/views/images/, dan copy script dibawah ini :

<?php
use yii\widgets\ActiveForm;
?>

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

    <?= $form->field($model, 'foto')->fileInput() ?>

    <button>Submit</button>

<?php ActiveForm::end() ?>

5) TEST UPLOAD

Tahap terakhir, buat folder “uploads” di frontend/web/
Screenshot from 2015-08-16 13:41:39

Sekarang coba test upload :
Screenshot from 2015-08-16 13:43:49

Jika berhasil, maka tampilannya akan seperti ini :
berhasil upload di yii2

GAGAL UPLOAD

Jika gagal (move_uploaded_file permission denied) :
gagal upload di yii2

Itu tandanya permissionnya gak cukup, solusinya di chmod dulu :

chmod -R 777 /var/www/html/yii2_advanced/frontend/web/

chmod folder

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, web server, and networking.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.