Laravel Upload Gambar dan Preview

SHARE :

Pengunggahan gambar jQuery Laravel  dengan pratinjau.

Dalam tutorial ini, Anda akan belajar cara mengunggah gambar dengan pratinjau dan validasi di laravel.

Serta cara mengupload image ke dalam database dan direktori penyimpanan di laravel .

Dan cara memvalidasi image mime type, size, dimensi, dll di laravel controller dengan menggunakan aturan validasi laravel.

Mengunggah gambar dengan pratinjau di laravel adalah hal yang sangat umum dan merupakan persyaratan yang sangat mendasar dari setiap aplikasi laravel.

Laravel Upload Gambar dan Preview

Gunakan langkah-langkah berikut dan unggah gambar dengan pratinjau di aplikasi laravel  menggunakan jquery:

Langkah 1 – Unduh Aplikasi Laravel

Pertama-tama, unduh atau instal pengaturan baru laravel. Jadi, buka terminal dan ketik perintah berikut untuk menginstal aplikasi laravel baru ke mesin Anda:

composer create-project --prefer-dist laravel/laravel LaravelImage

Langkah 2 – Siapkan Database dengan Aplikasi

Pada langkah ini, atur database dengan aplikasi laravel yang telah diunduh/diinstal. Jadi, Anda perlu mencari file .env dan mengatur detail database sebagai berikut:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database-name
DB_USERNAME=database-user-name
DB_PASSWORD=database-password

Langkah 3 – Buat Model & Migrasi

Pada langkah ini, buka lagi command prompt Anda. Dan jalankan perintah berikut di atasnya. Untuk membuat file model dan migrasi untuk formulir:

php artisan make:model Photo -m

Setelah itu, buka file create_photos_table.php di dalam direktori Laravel database/migrations/. Dan perbarui fungsi up() dengan kode berikut:

public function up()
{
    Schema::create('photos', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('path');
        $table->timestamps();
    });
}

Kemudian, buka lagi command prompt dan jalankan perintah berikut untuk membuat tabel ke dalam database:

php artisan migrate

Langkah 4 – Buat Route

Pada langkah ini, buka file web.php dari direktori route. Dan perbarui rute berikut ke dalam file web.php :

use App\Http\Controllers\ImageUploadController;
 
Route::get('image-upload-preview', [ImageUploadController::class, 'index']);
Route::post('upload-image', [ImageUploadController::class, 'store']);

Langkah 5 – Hasilkan Pengontrol Dengan Artisan Command

Pada langkah ini, jalankan perintah berikut pada prompt perintah untuk membuat file Controller :

php artisan make:controller ImageUploadController

Setelah itu, buka app/http/controllers dan buka file ImageUploadController.php. Dan perbarui kode berikut ke dalamnya:

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use App\Models\Photo;
 
class ImageUploadController extends Controller
{
     public function index()
    {
        return view('image-upload');
    }
 
    public function store(Request $request)
    {
         
        $validatedData = $request->validate([
         'image' => 'required|image|mimes:jpg,png,jpeg,gif,svg|max:2048',
 
        ]);
 
        $name = $request->file('image')->getClientOriginalName();
 
        $path = $request->file('image')->store('public/images');
 
 
        $save = new Photo;
 
        $save->name = $name;
        $save->path = $path;
 
        return redirect('image-upload-preview')->with('status', 'Image Has been uploaded successfully in laravel');
 
    }
}

Baris kode berikut akan mengunggah gambar ke direktori gambar:

$path = $request->file('image')->store('public/images');

Langkah 6 – Buat View Blade

Sekarang, buat formulir pengunggahan gambar dalam file tampilan blade untuk menampilkan formulir pengunggahan gambar dan kirim ke database.

Jadi, Buka sumber daya/tampilan dan buat image-upload.blade.php dan perbarui kode berikut ke dalamnya:

<!DOCTYPE html>
<html>
<head>
  <title>Laravel 8 Image Upload With Preview - Tutsmake.com</title>
 
  <meta name="csrf-token" content="{{ csrf_token() }}">
 
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
 
 
</head>
<body>
 
<div class="container mt-4">
 
  <h2 class="text-center">Image Upload with Preview using in Laravel 8 - Tutsmake.com</h2>
 
      <form method="POST" enctype="multipart/form-data" id="upload-image" action="{{ url('upload-image') }}" >
                 
          <div class="row">
 
              <div class="col-md-12">
                  <div class="form-group">
                      <input type="file" name="image" placeholder="Choose image" id="image">
                        @error('image')
                        <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
                        @enderror
                  </div>
              </div>
 
              <div class="col-md-12 mb-2">
                  <img id="preview-image-before-upload" src="https://www.riobeauty.co.uk/images/product_image_not_found.gif"
                      alt="preview image" style="max-height: 250px;">
              </div>
                 
              <div class="col-md-12">
                  <button type="submit" class="btn btn-primary" id="submit">Submit</button>
              </div>
          </div>     
      </form>
</div>
 
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
 
<script type="text/javascript">
      
$(document).ready(function (e) {
 
   
   $('#image').change(function(){
            
    let reader = new FileReader();
 
    reader.onload = (e) => { 
 
      $('#preview-image-before-upload').attr('src', e.target.result); 
    }
 
    reader.readAsDataURL(this.files[0]); 
   
   });
   
});
 
</script>
</div>  
</body>
</html>

Kode di bawah ini akan menampilkan pesan kesalahan validasi pada file tampilan blade:

@error('image')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror

Langkah 7 – Terapkan Kode javascript untuk Menampilkan Pratinjau Gambar

Pada langkah ini, terapkan kode javascript untuk menampilkan pratinjau gambar sebelum diunggah ke database dan folder penyimpanan.

Kami telah mengimplementasikan kode ini, sehingga Anda dapat menambahkan kode ini ke dalam file tampilan blade:

<script type="text/javascript">
      
$(document).ready(function (e) {
 
   
   $('#image').change(function(){
            
    let reader = new FileReader();
 
    reader.onload = (e) => { 
 
      $('#preview-image-before-upload').attr('src', e.target.result); 
    }
 
    reader.readAsDataURL(this.files[0]); 
   
   });
   
});
 
</script>

Langkah 8 – Buat Direktori Gambar di dalam Storage/app/public

Sekarang, buat direktori gambar di dalam direktori Storage/app/public. Karena baris kode berikut akan mengunggah gambar ke dalam direktori images, yang terletak di dalam direktori storage/app/public/ :

$path = $request->file('image')->store('public/images');

Langkah 9 – Jalankan Server Pengembangan

Langkah terakhir, buka command prompt dan jalankan perintah berikut untuk memulai server pengembangan:

php artisan serve

Kemudian buka browser Anda dan tekan url berikut di atasnya:

http://127.0.0.1:8000/image-upload-preview

 

OOKINFO

Jasa pembuatan Aplikasi Mobile dan Web. Siap memberikan solusi digital untuk bisnis anda. Tugas Kuliah, Organisasi, Perusahaan, E-Commerce.