Insert Image ke BLOB (PHP – MySQL)

Akhirnya sebuah pemikiran panjang yang bikin diriku kurus kering [lebay]
mengenai menyimpan dan menampilkan suatu file image ke dan dari database
telah terjawab dan terbilang OK… thanks prenz…
dari kemaren q coba sendiri gagal mulu.. hikz.. T_T
pertamanya file nya kagak mau diupload..
trus… abis itu mau di upload tapi gambar cuman masuk separo.. alias kagak utuh

sebenarnya ada cara yang sering digunakan untuk menyimpan image adalah dengan metode PATH
yaitu gambar/file di simpan di subdirektori website kita. namun, berhubung proyek kemeren mintanye pake BLOB
yah terpaksa deh bikin yang pake BLOB

apa seh BLOB itu kok dari tadi bahas BLOB hehe BLOB adalah suatu tipe data di DBMS engine singkatan dari
BINARY LARGE ORBJECT. So, kalo meh nyimpen file di Mysql yah pake tipe data ini hehe…

OK sekarang q meh share neech cara insert image data ke BLOB database

Disini saya menggunakan bahasa pemrog PHP dan server database MYSQL:

pertama, siapkan dulu tabelnya di MySQL:

CREATE TABLE gambar (
  id INT NOT NULL AUTO_INCREMENT,
  file_content BLOB,
  file_name varchar(256) NOT NULL,
  file_type varchar(256) NOT NULL,
  file_size int(50) NOT NULL,
PRIMARY KEY(id)
) ;


tipe di atas ntar diisikan "GIF"/"JPEG"/"PNG", yang cara mudahnya, deteksi aja secara otomatis MIME-Type nya trus dikonversi ke GIF/JPEG/PNG/etc… (akan dijelaskan di bawah)

Kedua, coba bikin HTML form utk upload gambar :

< form method="post" action="upload.php"
enctype="multipart/form-data">
Nama File: < input name="file" type="file">
< input type="submit" value="UpLoad" name="submitbtn">
< /form>

file gambar yang di-upload ke database dikasih nama "file" dengan tipe "file", cara manggilnya nanti pake $_FILES[‘file’];

bikin dulu file koneksi.php

$host = "localhost"; // alamat lokasi server
$uname= "root";  // username mysql
$passw= ""; // password mysql
$db_name ="nama_database"; // nama database

//melakukan koneksi ke database
mysql_connect($host,$uname,$passw) OR die (" tidak terkoneksi dengan database " );
mysql_select_db($db_name) OR die ("terkoneksi, namun tidak memmiliki database " );
?>

Nah sekarang bagian terpentingnya…

Bikin File upload.php

     include "koneksi.php"; // memanggil  file koneksi.php

    $file_name = $_FILES[‘file’][‘name’]; //nama file (tanpa path)
    $tmp_name  = $_FILES[‘file’][‘tmp_name’];
//nama local temp file di server
    $file_size = $_FILES[‘file’][‘size’]; //ukuran file (dalam bytes)
    $file_type = $_FILES[‘file’][‘type’]; //tipe filenya (langsung detect MIMEnya)
    $fp = fopen($tmp_name, ‘r’); // open file (read-only, binary)
    $file_content = fread($fp, $file_size) or die("Tidak dapat membaca source file"); // read file
    $file_content = mysql_real_escape_string($file_content) or die("Tidak dapat membaca source file"); // parse image ke string
    fclose($fp); // tuptup file

    /* query dan proses handling untuk melakukan insert ke database*/

$qu = "INSERT INTO `gambar`
                (`file_content`,`file_name`,`file_type`,`file_size`)
                VALUES
                (‘$file_content’,’$file_name’,’$file_type’,’$file_size’)";
 $re = mysql_query($qu) or die ("Gagal insert ke database");
 echo $file_name." berhasil di-insertkan ke database";
 ?>

UNtuk menampilkan gambar bikin  file tampil.php
$id=$_GET[‘id’];  // id yang gambarnya mo ditampilkakn

$query = "select file_content,file_type from gambar where id=$id";
$data = mysql_query($query);
$data = mysql_fetch_array($data);

$content = $data[0];
$type = $data[1];

header("Content-type: $type");   // parsing ke mime tipe


echo $content; 
?>

sblm ada output apa2 ke screen, kirim header() sesuai dengan MIME-Type biar ntar halaman tampil.php akan nge-parse gambar dengan tipe file yang sesuai…

Nah untuk cara pemanggilan/ menampilkan gambarnya:

diurl: tampil.php?id=id_yg_dituju

misal kalo di kode html pemanggilanya

< img src="tampil.php?id=1">

yang nantinya akan ngirimin variabel GET sesuai dengan id gambar yang mau di load. misalnya id=1, maka ntar link tag lengkapnya sama browser akan diterjemahkan sebagai : tampil.php?id=1.

Yaph… Segini dulu artikel dari saia ini.. moga artikel ini bisa berguna buat temen-temen semua yang sebelumnya menagalami hal yang sama dengan diriku.. bingung mumetz emosi dengan isnert data ke BLOB yang kagak jadi jadi hehehe

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. gan gimana caranya ya buat upload gambar tanpa harus browsing datanya?
    maksudnya uploadnya otomatis, cuma file itu aja yg di upload?

    kalo g salah kan prinsip kerjanya di upload.php dia ngebaca mode read & binnary

    terus gimana ya supaya yang dibaca itu misalkan gambar yang ada di folder C:xampphtdocsrahmat_TKJ4bPICout00.jpg aja?

    soalnya kalo saya cuma masukin link gambarnya gabisa….
    tolong pencerahannya ya gan
    maaf kalo ini pertanyaan konyol
    thanks

    • hmmm saya belum pernah buat aplikasi seperti yang mas maksud… btw,thanks sudah mampir 😀