百度開發者的雲端程式碼空間為了保證高可用,不允許使用者將圖片儲存到程式碼空間中,使用CDN或物件儲存不僅收費而且使用比較複雜,於是考慮能否將img儲存在資料庫中,雖然很多人說會造成效能問題,權當一試。
1、準備三個檔案
#第一個用於將圖片儲存為資料庫字元,第二個php檔案用於取得資料庫字元並產生圖片,第三個是檔案1所使用的圖片。
2、資料庫設計
超長字串或二進位資料分別可以用TEXT(65535),BLOB(64k)保存,但是嘗試使用二進位儲存失敗,便使用TEXT保存,但是一張500多kb的圖片經過base64加密的字元長度高度75萬!
光靠一個TEXT是存不下去的,而且應該也會造成嚴重的效能問題,所以分割成N份保存,這裡以50000字元長度為一個單位。記錄imgid,方便拼接。
3、將圖片儲存到資料庫[dm01_imgTobase64.php]
/*链接数据库*/ // 1.转为普通字符 $file = file_get_contents('test.jpg'); $base64_str = base64_encode($file); $len = strlen($base64_str); $step = ceil($len/50000); for ($i=0; $i <$step ; $i++) { $substr = substr($base64_str, $i*50000,50000); $sql = "INSERT INTO b64_img VALUES( null,1,1,$i,'$substr') "; $res = mysqli_query($link,$sql); }
4、產生的資料
5、讀取資料庫記錄,產生圖片[dm02_getImg.php]
/*链接数据库*/ $sql = "SELECT * FROM b64_img WHERE imgid = 1 ORDER BY bakid ASC "; $res = mysqli_query($link,$sql); $data = array(); $imgStr = ''; while ($row = mysqli_fetch_assoc($res)) { $imgStr .= $row['bstr'] ; } $binaryStr = base64_decode($imgStr); file_put_contents("ThisImg.jpg", $binaryStr);
6 、成功生成圖片
#推薦教學:PHP影片教學
###########推薦教學:###PHP影片教學#######以上是php如何為資料庫新增圖片的詳細內容。更多資訊請關注PHP中文網其他相關文章!