ถ้าเราเก็บรูปไว้ในฐานข้อมูล Field เป็น BLOB การที่เราจะเอาข้อมูลนั้นออกมาแสดงได้ต้องบอก Browser ให้รู้ว่าข้อมูลดังกล่าวที่เราจะส่งออกไปนั้น เป็น image แบบหนึ่งแบบใดตาม jpg, gif, หรือ png ก็ได้ ขึ้นอยู่กับภาพของเรา Header จะบอก browser เช่น
ถ้าเป็น gif
GIF คืออะไร gif เป็นรูปแบบไฟล์ภาพเหมาะสำหรับภาพเคลื่อนไหว
header('Content-Type: image/gif');
ถ้าเป็น png
PNG คืออะไร รูปแบบ รูปภาพสำหรับเว็บ อ่านว่า ปิง
header('Content-Type: image/png');
ถ้าเป็น jpg
JPG JPEG คืออะไร JPG คือรูปแบบไฟล์ภาพสำหรับภาพถ่าย
header('Content-Type: image/jpeg');
ส่วนโค้ดตามแบบ MVC ใน Yii ละก็ดูตามตัวอย่างโค้ดได้เลยครับ
โค้ดในส่วนของ C(controller)
public function actionShowImage($id)
{
$model = PIC::model()->findByPk($id);
$this->renderPartial('showds', array( 'model'=>$model,),false,false);
}
M (Model)
class Pic extends CActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model($className);
}
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'pic';
}
}
V (View)
<?php
header("Content-type: jpg");
echo $model->sg_pic;
?>ในส่วนของ Content-type ระบุชนิดของรูปลงไป ถ้าเราเก็บชนิดของรูปไว้ใน ฐานข้อมูลด้วยก็ ใช้ $model->sg_type แทน jpg ได้เลย
เท่านี้เราก็จะได้รูปภาพโชว์ที่ browser แล้วครับ