Belajar PHP

Upload Gambar dengan PHP dan Simpan di Database (Lengkap untuk Pemula)

Upload Gambar dengan PHP dan Simpan di Database (Lengkap untuk Pemula)

Pelajari cara upload gambar dengan PHP dan simpan ke database MySQL secara aman. Tutorial ini membahas form upload, validasi file, penyimpanan gambar, dan contoh kode lengkap.


Pengenalan Upload Gambar di PHP

Fitur upload gambar sering digunakan dalam website seperti profil user, artikel blog, produk, dan galeri. Dengan PHP, Anda dapat mengunggah gambar dari form HTML lalu menyimpannya ke server dan mencatat informasinya ke database.

Struktur Database untuk Menyimpan Gambar

Buat tabel images di MySQL:


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

Form Upload Gambar (HTML)

Buat file upload.php:


<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <title>Upload Gambar</title>
</head>
<body>

<h2>Upload Gambar</h2>

<form action="upload.php" method="POST" enctype="multipart/form-data">
  <input type="file" name="gambar" accept="image/*" required><br><br>
  <button type="submit" name="upload">Upload</button>
</form>

</body>
</html>
  

Koneksi Database MySQL

Buat file koneksi.php:


<?php
$conn = mysqli_connect("localhost", "root", "", "belajarphp");

if (!$conn) {
    die("Koneksi database gagal: " . mysqli_connect_error());
}
?>
  

Proses Upload dan Simpan ke Database

Tambahkan kode PHP berikut di upload.php:


<?php
include 'koneksi.php';

if (isset($_POST['upload'])) {

    $namaFile = $_FILES['gambar']['name'];
    $tmpFile  = $_FILES['gambar']['tmp_name'];
    $ukuran   = $_FILES['gambar']['size'];

    $ekstensiValid = ['jpg', 'jpeg', 'png', 'gif'];
    $ekstensi = strtolower(pathinfo($namaFile, PATHINFO_EXTENSION));

    if (!in_array($ekstensi, $ekstensiValid)) {
        echo "Format file tidak diizinkan!";
        exit;
    }

    if ($ukuran > 2 * 1024 * 1024) {
        echo "Ukuran gambar maksimal 2MB!";
        exit;
    }

    $namaBaru = uniqid() . '.' . $ekstensi;
    move_uploaded_file($tmpFile, "uploads/" . $namaBaru);

    $query = "INSERT INTO images (filename) VALUES ('$namaBaru')";
    mysqli_query($conn, $query);

    echo "Gambar berhasil diupload!";
}
?>
  

Penjelasan Kode

  • $_FILES digunakan untuk mengambil data file upload.
  • pathinfo() mengambil ekstensi file.
  • uniqid() mencegah nama file duplikat.
  • move_uploaded_file() memindahkan file ke folder server.

Menampilkan Gambar dari Database

Contoh menampilkan gambar yang sudah diupload:


<?php
$result = mysqli_query($conn, "SELECT * FROM images ORDER BY id DESC");
while ($row = mysqli_fetch_assoc($result)) {
    echo '<img src="uploads/'.$row['filename'].'" width="150">';
}
?>
  

Tips Keamanan Upload Gambar

  • Batasi ekstensi file yang diperbolehkan.
  • Batasi ukuran file upload.
  • Gunakan nama file unik.
  • Simpan file di folder khusus (misalnya uploads/).
  • Jangan menyimpan file executable.

Kesimpulan

Upload gambar dengan PHP dan menyimpannya ke database dapat dilakukan dengan mudah jika memahami alur upload file, validasi, dan penyimpanan data. Dengan menerapkan validasi yang tepat, sistem upload akan aman dan stabil.

Internal Link Terkait

FAQ (Pertanyaan Umum)

Apakah gambar disimpan di database?

Tidak langsung. Yang disimpan di database adalah nama file, sedangkan gambar disimpan di folder server.

Format gambar apa saja yang diperbolehkan?

Biasanya JPG, JPEG, PNG, dan GIF.

Berapa ukuran maksimal upload gambar?

Disarankan maksimal 2MB untuk performa dan keamanan.

Apakah upload gambar aman?

Aman jika menggunakan validasi ekstensi, ukuran, dan nama file unik.

Tags

#PHP #UploadGambar #MySQL #BelajarPHP #WebDeveloper #TutorialPHP

Ruang Diskusi

Tinggalkan Komentar

Belum ada komentar. Jadilah yang pertama berkomentar!