February 13, 2008 at 5:41 pm

Memasukkan Gambar ke Dalam Database

Ini trik sederhana kok, tetapi sangat efektif untuk mengelola file, khususnya gambar. Dulu ketika mengelola banyak file gambar milik member, saya menggunakan path tambahan agar nama filenya tidak sama. Saya benar-benar menyimpan file tersebut dalam bentuk fisik, artinya memang benar-benar bisa dilihat dalam file explorer. Beberapa bulan yang lalu mulai mengetahaui cara memasukkan file gambar ke dalam database, tetapi masih ragu untuk menggunakannya, dengan alasan apakah akan efektif dan tidak memperlambat akses. Kemudian melalui beberapa riset ilmiah dengan memperhatikan baik, buruk, efektifitas dan kenyaman, saya memutuskan untuk menggunakan cara ini sebagai operasi standar untuk menyimpan data gambar.

Langsung saja, siapkan beberapa yang diperlukan, sebagai berikut

  1. database, yang penting ada tabel gambarku, dengan minimal 1 kolom pic bertipe BLOB. Blob sendiri adalah tipe kolom untuk menyimpan berbagai macam file, termasuk gambar. Document word juga bisa disimpan.
  2. PHP engine, sebagai scripting untuk memasukkan file gambar tadi ke dalam database. Gunakan fungsi fopen(), fread() untuk keperluan ini.
  3. file HTML untuk membangun halaman form, nantinya file gambar akan di upload melalui form ini.
  4. file HTML untuk menampilkan gambar dari database.
  5. file PHP untuk memproses upload file gambar atau untuk mengambil gambar, bisa dijadikan satu atau dipisah, dalam artikel ini saya memisahnya, agar mudah dipahami. Jadi kita mempunyai 2 file PHP.
  6. Editor HTML, biasanya saya menggunakan Notepad++, silahkan download disini.

Karena kode programnya terlalu panjang, saya tidak bisa menampilkannnya disini, anda bisa mendownloadnya dihalaman paling bawah,saya sudah menyediakan link, kalau broken, hubungi saya. Saya akan menjelaskan prinsipnya saja.

Upload data gambar
Prinsipnya adalah memproses file gambar yang dikirimkan oleh pengguna melalui elemen form HTML biasa, setelah itu file akan ditangkap dan di baca dalam bentuk file biner dengan menggunakan fungsi fopen(), fread() milik PHP. Fungsi fread() akan mengembalikan sebuah data dalam bentuk biner, dan siap untuk dimasukkan ke dalam database, hasil kembalian ini bisa diproses layaknya string kok, jadi mudah. Sampai disini gambar sudah masuk ke dalam database. Sekarang yang jadi masalah bagaimana menampilkan gambar tersebut. Simak dibawah ini.

Menampilkan gambar dari database.
Sangat mudah kok, seperti perintah select biasa. Yang terpenting adalah set headernya. Untuk menampilkan file gambar, PHP harus memberikan sebuah header kepada browser yang menunjukkan bahwa file yang akan dikirim adalah gambar. Headernya header(”content-type:image/gif”); atau header(”content-type:image/png”); karena menggunakan header, maka antara file pemroses untuk mengambil gambar dari database dan file untuk menampilkan gambar harus berbeda, jika tidak maka gambar anda akan terlihat gambar rusak, berupa karakter aneh.

Klik disini untuk mendownload sourcenya secara lengkap.

Related Post

RSS feed | Trackback URI

23 Comments »

Comment by anak_kemaren_sore
2008-03-03 10:15:53

kok gk bs didownload url nya

Comment by Bimo Hery Prabowo
2008-07-02 02:42:02

udah bisa kok mas

 
 
Comment by dewa
2008-03-09 07:20:15

apakah yang diinsert ke db itu hanya nama filenya saja?? dan apakah jika menggunakan blob tidak dibutuhkan lagi direktori untuk menyimpan file image secara fisik?

 
Comment by edwin
2008-04-23 11:34:46

maaf, url nya nggak bisa mas..tlng di reupload lagi..lagi butuh neh..:) makasih sebelumnya…

 
Comment by Bimo Hery Prabowo
2008-04-23 11:40:20

klo filenya ga bisa didownload, mungkin servernya lagi down, karena aku pake miliknya om cosa yang kebetulan lagi kena serangan…ntar aku perbaiki linknya

 
Comment by Eep
2008-06-14 15:59:49

kalau file gambarnya banyak dan terus menerus bertambah, dan bisa menyebabkan file DB/SQL nya berukuran berGB-GB, apakah akan ada masalah nanti di servernya ga..?
tks

Comment by Bimo Hery Prabowo
2008-06-16 01:31:55

belum pernah nyoba sih, tapi kemungkinan itu urusannya si mesin database, klo databasenya stabil untuk meng-handle file dengan kapasitas besar, saya rasa ndak papa. MUngkin bisa di coba dengan oracle

 
 
Comment by ucink
2008-08-11 05:39:27

wah nu bener atuh nyien blog teh goblog,click 1 dollar.COM

 
Comment by Guest
2008-09-18 02:44:01

Mas, aq dah coba. Tapi kok gambar nya ga’ nampil ya? Cuma’ nama nya doank…
Mohon pencerahan nya!
Thks!

Comment by aldy
2008-12-09 08:06:53

coba engine db nya diganti jadi MyISAM

 
Comment by Bimo Hery Prabowo
2008-12-09 15:13:03

km salah kalau masih nampil nama filenya, yang benar itu kalau misal salah ya tampilknya karakter2 aneh, karena itu gambar yang udah di encoding.. coba dicek lagi deh..

 
 
Comment by mulkan
2008-11-10 07:28:45

makasih tutorialnya. Mas coba kunjungi script ku di http://www.aktuari.co.cc

 
Comment by fahri
2009-01-05 16:37:08

makasih nih mas sblmnya…aku udah download n berhasil menampilkan gambarnya..yg jadi masalah klo scriptnya ku simpan di layout halaman web yang sudah aku rancang ada pesan error spt ini..Cannot modify header information – headers already sent by (output started at……………)….solusinya gmna y mas?

 
Comment by putu ardy wiguna
2009-05-17 14:24:17

ok…………………… coyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

 
Comment by ismael
2009-06-14 12:40:45

makasi ya, nanti dirumah saya coba mudah2an berhasil, soalnya lagi ada kasus ni

 
Comment by ismael
2009-06-14 13:01:51

kalo menyimpan gambar yang disimpan hanya nama file dan pathnya gimana ya. tolong donk di share bagi yang tau

 
Comment by Sugix
2009-07-01 21:30:55

mas cara hapus imagenya bagaimana? jd jika di klik HAPUS, maka di database terhapus dan gambar yg di folder jg ikut terhapus?? thx

 
Name (required)
E-mail (required - never shown publicly)
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped=""> in your comment.

Trackback responses to this post