Upload Banyak Gambar Sekaligus + Preview (PHP & MySQL) - Part 8

🖼️ Upload Banyak Gambar Sekaligus + Preview (PHP & MySQL) - Part 8

Halo coder! Di tutorial ini kita akan membuat fitur upload multiple file (banyak gambar sekaligus), lengkap dengan preview sebelum upload, validasi format file, dan menyimpan ke database.

Upload Multiple Image Preview

📦 Fitur Utama

  • Upload beberapa gambar sekaligus
  • Preview gambar sebelum diupload
  • Validasi format & ukuran
  • Simpan nama file ke database

🗃️ Struktur Database (tabel gallery)


CREATE TABLE gallery (
  id INT AUTO_INCREMENT PRIMARY KEY,
  filename VARCHAR(255),
  uploaded_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

📁 Folder Upload


/uploads/gallery/

Buat folder dengan izin tulis (CHMOD 755 atau 777).

📄 File: upload-multiple.php


<?php
require 'config.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  foreach ($_FILES['photos']['tmp_name'] as $i => $tmp_name) {
    $name = basename($_FILES['photos']['name'][$i]);
    $size = $_FILES['photos']['size'][$i];
    $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
    $allowed = ['jpg','jpeg','png','gif'];

    if (in_array($ext, $allowed) && $size <= 1048576) {
      $newName = uniqid().'-'.$name;
      move_uploaded_file($tmp_name, "uploads/gallery/".$newName);

      $stmt = $conn->prepare("INSERT INTO gallery (filename) VALUES (?)");
      $stmt->bind_param("s", $newName);
      $stmt->execute();
    }
  }
  $msg = "Semua gambar berhasil diupload!";
}
?>

📷 Form Upload + Preview


<h2>Upload Banyak Gambar Sekaligus</h2>
<?php if (isset($msg)) echo "<p style='color:green;'>$msg</p>"; ?>

<form method="post" enctype="multipart/form-data">
  <input type="file" name="photos[]" accept="image/*" multiple onchange="previewMultiple(event)" required><br><br>

  <div id="preview-area" style="display:flex; gap:10px; flex-wrap:wrap;"></div>
  <br>
  <button type="submit">Upload Sekarang</button>
</form>

<script>
function previewMultiple(event) {
  const area = document.getElementById('preview-area');
  area.innerHTML = '';
  for (let i = 0; i < event.target.files.length; i++) {
    const file = event.target.files[i];
    const reader = new FileReader();
    reader.onload = function(e) {
      const img = document.createElement('img');
      img.src = e.target.result;
      img.style = "max-width:100px; border-radius:6px;";
      area.appendChild(img);
    };
    reader.readAsDataURL(file);
  }
}
</script>

📁 Menampilkan Gambar Galeri dari Database


<?php
$result = $conn->query("SELECT filename FROM gallery ORDER BY uploaded_at DESC");
while($row = $result->fetch_assoc()) {
  echo '<img src="uploads/gallery/'.$row['filename'].'" style="max-width:120px; margin:5px;">';
}
?>

🛡️ Tips Keamanan Upload

  • Validasi jenis file (hanya gambar)
  • Batasi ukuran file (misal 1MB)
  • Gunakan nama file acak (uniqid())
  • Jangan izinkan upload file .php, .exe, dll

✅ Kesimpulan

Sekarang aplikasi kamu sudah mendukung upload banyak gambar sekaligus, lengkap dengan preview sebelum diunggah. Fitur ini cocok banget untuk:

  • Galeri pengguna
  • Upload foto produk
  • Halaman admin konten

Di part berikutnya, kita akan bahas cara menghapus file gambar dari server dan database. Sampai jumpa di tutorial selanjutnya! 🔥

Posting Komentar untuk "Upload Banyak Gambar Sekaligus + Preview (PHP & MySQL) - Part 8"