PHP使用BLOB存取圖片資訊執行個體
BLOB介紹
mysql BLOB類型
建立資料庫
PHP檔案轉二進位代碼
HTML代碼
讀取二進位圖片
php完整代碼
HTML代碼
PHP使用BLOB存取圖片資訊執行個體
BLOB介紹
BLOB (binary large object),二進位大對象,是一個可以儲存二進位檔案的容器。在電腦中,BLOB常常是資料庫中用來儲存二進位檔案的欄位類型。BLOB是一個大檔案,典型的BLOB是一張圖片或一個音效檔,由於它們的尺寸,必須使用特殊的方式來處理(例如:上傳、下載或者存放到一個資料庫)。根據Eric Raymond的說法,處理BLOB的主要思想就是讓檔案處理器(如資料庫管理員)不去理會檔案是什麼,而是關心如何去處理它。但也有專家強調,這種處理大資料對象的方法是把雙刃劍,它有可能引發一些問題,如儲存的二進位檔案過大,會使資料庫的效能下降。在資料庫中存放體積較大的多媒體對象就是應用程式處理BLOB的典型例子。
mysql BLOB類型
MySQL中,BLOB是個類型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,這幾個類型之間的唯一區別是在隱藏檔的最大大小上不同。
類型 大小(單位:位元組)
| TinyBlob |
最大255 |
| Blob |
最大65K |
| MediumBlob |
最大16M |
| LongBlob |
最大4G |
linux修改etc/my.cnf[mysqld]max_allowed_packet = 16M //不同於[mysqldump]下的max_allowed_packet
注意: blob是mysql資料庫保留字,請務必不要用於欄位名。
建立資料庫
CREATE TABLE IF NOT EXISTS `myimg` ( `imgid` tinyint(3) NOT NULL AUTO_INCREMENT, `imgtype` varchar(25) NOT NULL DEFAULT '', `imgblob` mediumblob NOT NULL, PRIMARY KEY (`imgid`) )
PHP檔案轉二進位代碼
資料庫讀取更新插入都是一樣的,就不寫了,這裡唯寫PHP上傳圖片轉二進位的關鍵代碼
0) { if(is_uploaded_file($_FILES['upimg']['tmp_name'])) { // 轉成二進位 $imgBlob =addslashes(file_get_contents($_FILES['upimg']['tmp_name'])); }
HTML代碼
上傳檔案表單必須定義enctype
enctype="multipart/form-data"
完整代碼
上傳檔案到Blob
讀取二進位圖片
在瀏覽器上顯示BLOB映像,我們必須:
1、從MySQL BLOB獲得映像資料和類型
2、將類型設定為映像(image/jpg, image/gif, …)使用PHP header()函數。
3、輸出映像內容。
php完整代碼
檔案名稱:imageView.php
Error:SQL語句錯誤
".mysql_error()); $row = mysql_fetch_array($result); header("Content-type: " . $row["imageType"]); echo $row["imageData"]; } mysql_close($conn); ?>
HTML代碼
" />
感謝瀏覽收看本文,希望可以對php開發人員有協助。
PHP BloB完整執行個體參考網路文章
??