2008年10月7日 星期二

php upload image to mssql 2005

目前開發中的專案,程式語言使用php,db使用mssql 2005,為了某種關係要把圖片存進db。在google大神找了很久,都是用uppack去把圖檔轉成16進制再存進db,但試了好久都沒有成功。

問了一下同事之前有人有用base_64去轉存過,話不多說就試了一下,真的成功了!(果然寫程式的不是出張一嘴就是靠臉寫程式=..=),在此分享!

mssql裡的欄位使用nvarchar

//input image
$image = "images/b2_con2.jpg";
$imgSize = filesize($image );
$mssqlPicture = (fread(fopen($image , "r"), $imgSize )); //讀圖檔
$mssqlPicture = base64_encode($mssqlPicture); //再轉存成base64 ,這樣就可當成字串塞進db


//load image
header("Content-type: image/jpeg");
$queryStr = "select top 1 * from test order by id DESC";
$res = @$mdb2->query($queryStr);//我這裡是使用pear處理sql query
$row = $res->fetchAll();
$num = $res->numRows();
echo base64_decode($row[0]['img']); //再使用base64_decode還原