Tutorial Upload Image di Codeigniter 4
Pada tutorial sebelumnya admin sudah membahas bagaimana cara menampilkan data multi tabel di codeigniter 4 dan kali ini admin membahas tentang cara membuat upload file gambar dengan codeigniter 4
Pada setiap aplikasi web biasanya mempunyai fitur upload gambar. Dan dengan menggunakan framework codeigniter 4 dapat mempermudah para development web untuk mempercepat dalam membuat fitur-fitur di web. Karena didalam codeigniter 4 sudah menyediakan fungsi untuk upload gambar maupun file mari kita bahas langkah-langkahnya berikut ini :
Membuat Database
Database yang akan kita gunakan adalah database mysql jika kalian menggunakan database yang lainnya silahkan bisa menyesuaikan .
Jika kalian belum tahu tentang database mysql silahkan baca artikel yang kemarin tentang Pengenalan Database Mysql
membuat database dengan nama ci4_upload
create database ci4_upload;Kemudian kita buat tabel dengan nama upload
create table upload_gambar (
    -> id int(5) not null,
    -> judul varchar(40),
    -> gambar varchar(50),
    -> PRIMARY KEY(id)
    -> );Installasi Codeigniter 4
Jika belum paham tentang cara instalasi Codeigniter 4 bisa baca artikel Cara Installasi Codeigniter 4
Konfigurasi Database Mysql
Cara Membuat Koneksi database di codeigniter 4 ada dua cara yaitu cara pertama dengan merename file env menjadi .env yang ada di folder root project atau dengan file Database.php yang ada di folder app/config dan admin menggunakan file .env
 database.default.hostname = localhost
 database.default.database = ci4_upload
 database.default.username = root
 database.default.password = 
 database.default.DBDriver = MySQLiCari kode diatas kemudian edit hilangkan tanda pagarnya (#) lalu sesuaikan dengan host,username,password dan nama database kalian kemudian simpan jangan lupa juga ubah juga CI_ENVIRONMENT = development 
Membuat File Models
Silahkan buat file baru dengan nama ModelsUpload.php kemudian simpan di folder app/models kemudian masukan kode berikut ini :
<?php namespace App\Models;
use CodeIgniter\Model;
 
class ModelsUpload extends Model
{
    protected $table = 'upload_gambar';
     
    public function getGambar()
    {
        return $this->findAll();  
    }
    public function simpan_gambar($data)
    {
        $query = $this->db->table($this->table)->insert($data);
        return $query;
    }
 }Dari kode diatas terdapat beberpa kode dengan fungsi menampilkan data (public function getGambar) dan juga fungsi kode menyimpan data (public function simpan_gambar).
Membuat Controller
Sekarang buat file baru dengan nama Upload.php kemudian simpan di folder app/Controller kemudian masukan kode berikut ini :
<?php namespace App\Controllers;
 
use CodeIgniter\Controller;
use App\Models\ModelsUpload;
 
class Upload extends BaseController
{
    public function index()
    {
        helper('form');
        $model = new ModelsUpload();
        if (!$this->validate([]))
        {
            $data['validation'] = $this->validator;
            $data['gambar'] = $model->getGambar();
            echo view('view_list',$data);
        }
    }
    public function proses() {
        $model = new ModelsUpload();
        if ($this->request->getMethod() !== 'post') {
            return redirect()->to('upload');
        }
        $validation = $this->validate([
            'file_upload' => 'uploaded[file_upload]|mime_in[file_upload,image/jpg,image/jpeg,image/gif,image/png]|max_size[file_upload,4096]'
        ]);
 
        if ($validation == FALSE) {
            
            return $this->index();
        } else {
            $upload = $this->request->getFile('file_upload');
            $upload->move(WRITEPATH . '../public/assets/images/');
        $data = array(
            'judul'  => $this->request->getPost('judul'),
            'gambar' => $upload->getName()
        );
        $model->simpan_gambar($data);
        return redirect()->to('./upload')->with('berhasil', 'Data Berhasil di Simpan');
        }
    }
}Dari kode diatas terdapat beberapa fungsi, mulai dari menampilkan data (public function index()) dengan memanggil fungsi dari Model ($model = new ModelsUpload();).  Fungsi menyimpan data dan upload file (public function proses) yang diteruskan ke model ($model->simpan_gambar($data);) dan juga tempat penyimpanan untuk gambar yang kita upload ($upload->move(WRITEPATH . '../public/assets/images/');) silahkan buat folder baru assets/images di dalam foder public
Membuat Tampilan View
Sekarang kita buat untuk tampilan list data dan juga form uploadnya kita buat file baru dengan nama view_list.php kemudian simpan di folder "app/view" kemudian ketikan kode berikut ini :
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Menampilkan Data Multi Join Tabel</title>
	<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css" rel="stylesheet"> 
</head>
<body style="width: 70%; margin: 0 auto; padding-top: 30px;">
	<div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Upload Gambar </h2>
            </div>
        </div>
    </div>
    <hr>
    <div class="row">
    	<div class="col-lg-12">
    		 <!-- Success Upload -->
	        <?php if(!empty(session()->getFlashdata('berhasil'))){ ?>
	            <div class="alert alert-success">
	                <?php echo session()->getFlashdata('berhasil');?>
	            </div>
	        <?php } ?>
	        
	        <?php 
	            $errors = $validation->getErrors();
	            if(!empty($errors))
	            {
	                echo $validation->listErrors('list');
	            }
	        ?>
    		<?= form_open_multipart(base_url('upload/proses')); ?>
    		<div class="row">
    			<div class="col-md-4">
    				<label>Judul</label>
    				<div class="form-group">
                   		 <input type="text" name="judul" class="form-control"> 
                	</div>	
    			</div>
    			<div class="col-md-4">
    				<label>File</label>
    				<div class="form-group">
                   		 <input type="file" name="file_upload" class="form-control"> 
                	</div>	
    			</div>
    			<div class="col-md-4">
    				<label>Aksi</label>
    				<div class="form-group">
                   		  <?= form_submit('Send', 'Simpan') ?> 
                	</div>	
    			</div>
    		</div>
    		<?= form_close() ?>
    	</div>
    </div>
    <div class="row">
        <div class="col-lg-12 margin-tb">
			<table class="table table-bordered">
		        <tr>
		            <th>No</th>
		            <th>Judul</th>
		            <th>Gambar</th>
		        </tr>
		        	<?php foreach($gambar as $row):?>
		        <tr>
		        	<td><?=$row['id'];?></td>
		            <td><?=$row['judul'];?></td>
		            <td><img src="<?=base_url('assets/images/'.$row['gambar']);?>" width="100"></td>
		        </tr>
		        <?php endforeach;?>
		    </table>
		</div>
	</div>
</body>
</html>Jika sudah silahkan simpan lalu jalankan projectnya ketikan diterminal php saprk serve kemudian buka web browser kita ketikan alamat http://localhost:8080/upload maka tampilannya akan seperti dibawah ini :
Kesimpulan
Dari tutorial diatas kita sudah berhasil membuat sebuah fitur upload image dengan codeigniter 4 untuk membuat fitur upload file di codeigniter 4 ini lebih kodenya simple dari pada di codeigniter versi sebelumnya. 
Semoga tutorial membuat upload images/file/gambar ini dapat bermanfaat dan dapat dijadikan refrensi dalam pembuatan aplikasi dengan codeigniter 4..


terimakasih ya gan tutorialnya
ReplyDeleteterimakasih bang..salam dari timor leste
ReplyDelete