CRUD : PART 6 | Upload Gambar di Laravel

Baringin
By -
0

 Upload Gambar


    Pada pembahasan sebelum kita sudah membahas bagaimana cara upload data ke database. Sekarang kita akan membahas bagaimana cara upload gambar ke dalam database.


Langkah-langkah:

1. Buka file tambah-koleksi.blade.php di dalam folder view. Tambahkan perintah berikut di dalam form

...
<form method="post" action="/simpan" enctype="multipart/form-data">
@csrf
.....

    Atribut enctype="multipart/form-data" bertukas untuk meng enskripsikan data sebelum di kirim keserver. sedangkan method = "post" merupakan metode pengiriman data. Disini kita akan menggunakan metode post.

    Sedangkan perintah @csrf merupakan perintah untuk mengamankan website dari serangan yang dilakukan oleh hacker. Karena seringkali serangan terjadi saat upload data maka perintah ini di wajibkan untuk disertakan di dalam pemogram.


2. Tambahkan file input yang berguna untuk upload gamabr. Perhatikan code berikut:

<div class="row mt-3">
    <label class="col-3">Deskripsi</label>
    <div class="col">
        <textarea name="deskripsi" class="form-control" rows="5"></textarea>
    </div>
</div>
<!--Input Untuk Gambar-->
<div class="row mt-3">
    <label class="col-3">Upload Gambar</label>
    <div class="col">
        <input type="file" name="gambar" class="form-control">
    </div>
</div>


3 Buka file web.php di folder route. Karena kita menggunakan metode post maka ganti jalur get menjadi post. Anda juga dapat mengganti menjadi any, seperti berikut:

.....

Route::get('/', [KoleksiController::class, 'index']);
Route::get('/tambah', function () {
    return view('tambah-koleksi');
});

Route::post('/simpan', [KoleksiController::class, 'simpan']);


4. Masuk ke folder controller, buka KoleksiControl.php dan tambahkan script di dalam method simpan()

public function simpan(Request $req)
    {
        //cek apakah gambar di upload atau tidak
        if ($req->gambar == null) {
            $filename = 'komputer.png';
        }else{}
......  


    Perintah di atas bertujuan apakah gambar di upload atau kosong. Jika gambar kosong, maka ganti nama gambar menjadi komputer.png.


5. Selanjutnya tambahkan perintah berikut

if ($req->gambar == null) {
            $filename = 'komputer.png';
        } else {
            //cek validasi data
            $req->validate([
                'gambar'    => 'required',
                'gambar.*'  => 'image|mimes:png,jpg,jpeg|max:2048'
            ]);

    Sistim akan mengecek format dan jenis gambar serta ukuran. Jika tidak cocok maka sistim akan keluar, namun jika cocok akan di eksekusi oleh sistim.


6. Selanjutnya tambahkan scirpt berikut:

if ($req->hasfile('gambar')) {
    $filename = round(microtime(true) * 1000) . '-' . str_replace(' ', '-', $req->file('gambar')->getClientOriginalName());
    $req->file('gambar')->move(public_path('assets/images'), $filename);
}

    perintah $filename = round(microtime(true) * 1000) . '-' . str_replace(' ', '-', $req->file('gambar')->getClientOriginalName()); di tujuan untuk mengganti nama gambar saat di upload agar gambar tidak bentrok dengan nama yang sama. Disini kita mengganti nama gambar sesuai dengan tanggal dan waktu penguplotan gambar. Artinya jiak anda upload gambar dengan nama logo.png maka akan dirubah menjadi "1718952703450-logo.png".
    sedangkan perintah
$req->file('gambar')->move(public_path('assets/images'), $filename); adalah perintah untuk mengupload gambar ke dalam folder public/assets/. 


7.Selanjutnya ganti nilai gambar seperti berikut

$data = [
    'kode'      => $req->kode,
    'judul'     => $req->judul,
    'deskripsi' => $req->deskripsi,
    'gambar'    => $filename
;

 $file name kita dapatkan dari nama gambar yang kita buat di atas tadi.


Sript lengkapnya:

public function simpan(Request $req)
    {
        //cek apakah gambar di upload atau tidak
        if ($req->gambar == null) {
            $filename = 'komputer.png';
        } else {
            //cek validasi data
            $req->validate([
                'gambar'    => 'required',
                'gambar.*'  => 'image|mimes:png,jpg,jpeg|max:2048'
            ]);

            if ($req->hasfile('gambar')) {
                $filename = round(microtime(true) * 1000) . '-' . str_replace(' ', '-', $req->file('gambar')->getClientOriginalName());
                $req->file('gambar')->move(public_path('assets/images'), $filename);
            }
            $data = [
                'kode'      => $req->kode,
                'judul'     => $req->judul,
                'deskripsi' => $req->deskripsi,
                'gambar'    => $filename
            ];
            Koleksi::create($data);
            return redirect()->to('/');
        }
    }
}


    Sekarang coba jalankan program anda. Coba cek ke dalam folder public/assets/images apakah gambar sudah di upload atau belum. Seharusnya gambar yang sudah anda upload berada di dalam folder tersebut.





Post a Comment

0Comments

Post a Comment (0)