รูปภาพกับ MySQL

    การเก็บรูปภาพลงบน MySQL ก็ไม่ได้ยุ่งยากอะไรครับ อย่างแรกก็สร้างฟิลด์ picture เป็นชนิด Blob ก่อนเลย และอีกฟิลด์ชื่อ pic_type, pic_name เป็น varchar ครับ ฟิลด์ picture เราจะเอาไว้เก็บข้อมูลรูปภาพ ส่วนฟิลด์ pic_type เราจะเอาไว้เก็บ Header ของรูปเพื่อการแสดงผลครับ และฟิลด์ pic_name จะเก็บชื่อรูปครับ

    การเก็บรูปภาพลงบนฐานข้อมูล ขั้นตอนแรก อ่านไฟล์รูปออกมาก่อนครับ

$fileupload=$_FILES["fileupload"]; //มาจากการ Upload
$handle=fopen($fileupload[tmp_name], "rb"); //เปิดไฟล์เพื่ออ่าน (binary)
$imgdata=fread($handle, filesize($fileupload[tmp_name])); //อ่านไฟล์
$imgdata=addslashes($imgdata);
fclose($handle); //เปิดแล้วปิดไฟล์ด้วย
แล้วก็บันทึกลงบนฐานข้อมูล ด้วย query นี้ (สามารถมีรายการอื่นเพิ่มเติมได้)
$sql="INSERT INTO `tablename` ( `picture` , `pic_type` , `pic_name` ) VALUES ( `$imgdata`, `$fileupload[type]`, `$fileupload[name]` );";

เพียงแค่นี้ รูปก็ลงไปอยู่ยังฐานข้อมูลแล้วครับ สำหรับขั้นตอนในการอ่าน เราต้องกำหนด Header ให้กับการอ่านครับ เพื่อให้สามารถแสดงรูปภาพได้อย่างถูกต้อง สมมุติว่าเรา query ออกมาจากฐานข้อมูลแล้วนะครับ
header("Content-type: $result['pic_type']"); //กำหนด Header เพื่อบอกว่าเป็นรูปชนิดใด
print $result['picture']; //แสดงรูปภาพ

ถ้ารูปภามมีขนาดใหญ่ ควรใช้ ฟิลด์ชนิด LongBlob หรือ MediumBlob แทน Blob นะครับ เนื่องจากมันจะสามารถเก็บข้อมูลได้ขนาดใหญ่กว่า
ผู้เขียน Goragod โพสต์เมื่อ 01 เม.ย. 2551 เปิดดู 11,383 ป้ายกำกับ PHPSQL

เรื่องที่เกี่ยวข้อง

^