Untuk website, sebenarnya ngeload images lewat path juga merupakan pilihan bagus... lg pula penyimpanan images bisa ditaruk di subdirektori website kita.. Tapi, sekarang kita bahas tentang BLOB, nih kukasih contoh tutorialnya...
Pertama, siapkan dulu tabel nya di MySQL :
CREATE TABLE gambar
(
id integer not null auto_increment,
nama varchar(255) not null,
tipe varchar(100) not null,
size longint not null,
image blob not null
PRIMARY KEY (id)
)
tipe di atas ntai 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 buat HTML form utk upload gambar :
< form method="post" action="filename.php"
enctype="multipart/form-data">
< input type="hidden" value="204800" name="MAX_FILE_SIZE">
filename: < input name="imgfile" type="file">
< input type="submit" value="OK" name="submitbtn">< /form>
di situ kita akan coba batasin, gambar yang di upload maksimal ukurannya 200KB. didefinisikan dengan variabel MAX_FILE_SIZE = 204800... merasa kurang besar? naikin value nya sendiri..
file gambar yang di-upload akan dikasih nama "imgfile" dengan tipe "file", cara manggilnya nanti pake $_FILES['imgfile'];
nah, coding di filename.php nya kya gini nih :
pertama, kita akan "bedah" post_variable $imgfile tersebut ke dalam beberapa value :
$imgfile= $_FILES['imgfile'];
$name = $imgfile['name']; //nama file (tanpa path)
$type = $imgfile['type']; //tipe filenya (langsung detect MIMEnya)
$size = $imgfile['size']; //ukuran file (dalam bytes)
$uperr = $imgfile['error']; //error number (0 = no error)
$tmpfile= $imgfile['tmp_name']; //nama local temp file di server
ups, apa maksut baris terakhir? koq di server? berarti pas kita klik submit itu gambar udah di-upload?
hehehe..., iya. tapi itu cuman temporary file yang dibuatkan otomatis ama web server. file tersebut ntar akan dibaca ama PHP Script misalnya dengan fopen atau fread. Dan file temporary itu ostosmastis akan di-delete sama webserver setelah script PHP di-eksekusi... otomatis.. kita ngga usah doeloe pikirin hal-hal gituan...
yang perlu kita lakukan, sementara ini, adalah validasi aja... entah apakah ada error (di variabel catch $uperr) atau gambarnya kosong, atau mungkin apakah file itu udah ke-upload ke local temp file, yang caranya makae function is_uploaded_file().
kodenya kurang lebih sebagai berikut :
if(!$tmpfile or $uperr or !is_uploaded_file($tmpfile))
echo "error ...\n";
else {
... // proses penyimpanan dilakukan di sini...
}
>> nah, tahap persiapan dan upload selesei, skrg gimana nih caranya masukin ke database?
silakan coba code di bawah ini :
$file = fopen($tmpfile, "rb"); // open file (read-only, binary)
$imgdata = fread($file, $size); // read file
fclose($file);
// utk ngonvert MIME-Type ke tipe file...
switch ($type)
{
case "image/gif":
$mime = "GIF Image"; break;
case "image/jpeg":
case "image/pjpeg":
$mime = "JPEG Image"; break;
case "image/png":
case "image/x-png":
$mime = "PNG Image"; break;
default:
$mime = "unknown";
}
$mysqli->query(
"INSERT INTO gambar (nama,tipe,image,tanggal) " .
"VALUES ('".$name."','".$mime."','" . $mysqli->escape_string($imgdata) . "',".$size.")");
selesei deh tahap penyimpanan... coba cek aja di tabel gambar, insya Allah udah masuk tuh gambar ke database..
>> trus cara ngeload nya?
begini : buat satu file : pictures.php
// PHP-Script pictures.php
echo "< img src=\"showpic.php?id=$id"\" /> ";
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 : showpic.php?id=1.
dan ini adalah code di showpic.php
// PHP-Script showpic.php
$result = $mysqli->query("SELECT tipe, image FROM images WHERE id = $id");
$row = $result->fetch_object();
header($row->tipe); // type file
echo $row->image;
Oia, sblm ada output apa2 ke screen, kirim header() sesuai dengan MIME-Type biar ntar halaman showpic.php akan nge-parse gambar dengan tipe file yang sesuai...
kata kuncinya, utk nge-load BLOB di php, pergunakanlah fetch_object(). Kalo pake fetch_array() tu kan kalo qt ngeload array d database, hee
begitu saja.. silakan kembangin ndiri code nya yak. teknik gini ini aku dapet dari bukunya Michael Kofler - The Definitive Guide to MySQL5. So, kemiripan code, nama, pelaku, dan peristiwa dalam sampel code di atas, harap dimaklumi... hehee, namanya jg belajar ^_^
Semoga bermanfaat ya,..
laen kali qt sharing lg.
Pertama, siapkan dulu tabel nya di MySQL :
CREATE TABLE gambar
(
id integer not null auto_increment,
nama varchar(255) not null,
tipe varchar(100) not null,
size longint not null,
image blob not null
PRIMARY KEY (id)
)
tipe di atas ntai 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 buat HTML form utk upload gambar :
< form method="post" action="filename.php"
enctype="multipart/form-data">
< input type="hidden" value="204800" name="MAX_FILE_SIZE">
filename: < input name="imgfile" type="file">
< input type="submit" value="OK" name="submitbtn">< /form>
di situ kita akan coba batasin, gambar yang di upload maksimal ukurannya 200KB. didefinisikan dengan variabel MAX_FILE_SIZE = 204800... merasa kurang besar? naikin value nya sendiri..
file gambar yang di-upload akan dikasih nama "imgfile" dengan tipe "file", cara manggilnya nanti pake $_FILES['imgfile'];
nah, coding di filename.php nya kya gini nih :
pertama, kita akan "bedah" post_variable $imgfile tersebut ke dalam beberapa value :
$imgfile= $_FILES['imgfile'];
$name = $imgfile['name']; //nama file (tanpa path)
$type = $imgfile['type']; //tipe filenya (langsung detect MIMEnya)
$size = $imgfile['size']; //ukuran file (dalam bytes)
$uperr = $imgfile['error']; //error number (0 = no error)
$tmpfile= $imgfile['tmp_name']; //nama local temp file di server
ups, apa maksut baris terakhir? koq di server? berarti pas kita klik submit itu gambar udah di-upload?
hehehe..., iya. tapi itu cuman temporary file yang dibuatkan otomatis ama web server. file tersebut ntar akan dibaca ama PHP Script misalnya dengan fopen atau fread. Dan file temporary itu ostosmastis akan di-delete sama webserver setelah script PHP di-eksekusi... otomatis.. kita ngga usah doeloe pikirin hal-hal gituan...
yang perlu kita lakukan, sementara ini, adalah validasi aja... entah apakah ada error (di variabel catch $uperr) atau gambarnya kosong, atau mungkin apakah file itu udah ke-upload ke local temp file, yang caranya makae function is_uploaded_file().
kodenya kurang lebih sebagai berikut :
if(!$tmpfile or $uperr or !is_uploaded_file($tmpfile))
echo "error ...\n";
else {
... // proses penyimpanan dilakukan di sini...
}
>> nah, tahap persiapan dan upload selesei, skrg gimana nih caranya masukin ke database?
silakan coba code di bawah ini :
$file = fopen($tmpfile, "rb"); // open file (read-only, binary)
$imgdata = fread($file, $size); // read file
fclose($file);
// utk ngonvert MIME-Type ke tipe file...
switch ($type)
{
case "image/gif":
$mime = "GIF Image"; break;
case "image/jpeg":
case "image/pjpeg":
$mime = "JPEG Image"; break;
case "image/png":
case "image/x-png":
$mime = "PNG Image"; break;
default:
$mime = "unknown";
}
$mysqli->query(
"INSERT INTO gambar (nama,tipe,image,tanggal) " .
"VALUES ('".$name."','".$mime."','" . $mysqli->escape_string($imgdata) . "',".$size.")");
selesei deh tahap penyimpanan... coba cek aja di tabel gambar, insya Allah udah masuk tuh gambar ke database..
>> trus cara ngeload nya?
begini : buat satu file : pictures.php
// PHP-Script pictures.php
echo "< img src=\"showpic.php?id=$id"\" /> ";
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 : showpic.php?id=1.
dan ini adalah code di showpic.php
// PHP-Script showpic.php
$result = $mysqli->query("SELECT tipe, image FROM images WHERE id = $id");
$row = $result->fetch_object();
header($row->tipe); // type file
echo $row->image;
Oia, sblm ada output apa2 ke screen, kirim header() sesuai dengan MIME-Type biar ntar halaman showpic.php akan nge-parse gambar dengan tipe file yang sesuai...
kata kuncinya, utk nge-load BLOB di php, pergunakanlah fetch_object(). Kalo pake fetch_array() tu kan kalo qt ngeload array d database, hee
begitu saja.. silakan kembangin ndiri code nya yak. teknik gini ini aku dapet dari bukunya Michael Kofler - The Definitive Guide to MySQL5. So, kemiripan code, nama, pelaku, dan peristiwa dalam sampel code di atas, harap dimaklumi... hehee, namanya jg belajar ^_^
Semoga bermanfaat ya,..
laen kali qt sharing lg.
0 comments:
Post a Comment