首頁 > 後端開發 > PHP問題 > php如何為資料庫新增圖片

php如何為資料庫新增圖片

王林
發布: 2023-02-24 14:56:01
原創
6782 人瀏覽過

php如何為資料庫新增圖片

百度開發者的雲端程式碼空間為了保證高可用,不允許使用者將圖片儲存到程式碼空間中,使用CDN或物件儲存不僅收費而且使用比較複雜,於是考慮能否將img儲存在資料庫中,雖然很多人說會造成效能問題,權當一試。

1、準備三個檔案

php如何為資料庫新增圖片

#第一個用於將圖片儲存為資料庫字元,第二個php檔案用於取得資料庫字元並產生圖片,第三個是檔案1所使用的圖片。

2、資料庫設計

超長字串或二進位資料分別可以用TEXT(65535),BLOB(64k)保存,但是嘗試使用二進位儲存失敗,便使用TEXT保存,但是一張500多kb的圖片經過base64加密的字元長度高度75萬!

光靠一個TEXT是存不下去的,而且應該也會造成嚴重的效能問題,所以分割成N份保存,這裡以50000字元長度為一個單位。記錄imgid,方便拼接。

php如何為資料庫新增圖片

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,&#39;$substr&#39;) ";
    $res = mysqli_query($link,$sql);
}
登入後複製

4、產生的資料

php如何為資料庫新增圖片

5、讀取資料庫記錄,產生圖片[dm02_getImg.php]

/*链接数据库*/


$sql = "SELECT * FROM b64_img WHERE imgid = 1 ORDER BY bakid ASC ";
$res =    mysqli_query($link,$sql);
$data = array();
$imgStr = &#39;&#39;;

while ($row = mysqli_fetch_assoc($res)) {
    $imgStr .= $row[&#39;bstr&#39;]    ;
}

$binaryStr = base64_decode($imgStr);
file_put_contents("ThisImg.jpg", $binaryStr);
登入後複製

6 、成功生成圖片

php如何為資料庫新增圖片

#推薦教學:PHP影片教學

###########推薦教學:###PHP影片教學#######

以上是php如何為資料庫新增圖片的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板