Dedikisme's Blog

Ngeblog biar dibilang eksis

Yii2 Storing Image in Table Blob Field

Setelah baca ini http://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended dan cari2 tentang storing data berupa blob belum ada yasudah tulis artikel ini ok, langsung saja.

Untuk pertama pastikan table mempunyai field dengan tipe data blob. buat action pada controller untuk mengupload File

ihikController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
...
     public function actionUpload()
    {
        $model = new Item();
      if ($model->load(Yii::$app->request->post())) {
            $model->file = UploadedFile::getInstance($model, 'file');
            $model->file=file_get_contents($model->file->tempName);
            $model->save();

        }
        return $this->render('upload', [
                'model' => $model,
            ]);
    }
...
?>

dan kemudian pada view

upload.php
1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="item-form">

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

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

    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>

untuk rules validasinya bisa dicoba sendiri pada dokumentasi official dari yii2 https://github.com/yiisoft/yii2/blob/master/docs/guide/input-file-upload.md

dan untuk menampilkan gambar tambahkan action sebagai berikut

ihikController.php
1
2
3
4
5
6
7
8
9
10
<?php
...
    public function actionImage($id)
    {
        return $this->render('image', [
            'model' => $this->findModel($id),
        ]);
    }vs
...
?>

dan pada viewnya

image.php
1
2
3
4
5
6
7
8
9
<?php
...
<?php
header('Content-Type: '.$model->filetype);
print $model->file;
exit();
?>
...
?>

Comments