百度开发者的云代码空间为了保证高可用,不允许用户将图片保留到代码空间中,运用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怎样向数据库增加图片的细致内容,更多请关注ki4网别的相干文章!