
百度开发者的云代码空间为了保证高可用,不允许用户将图片保存到代码空间中,使用cdn或者对象存储不仅收费而且使用比较复杂,于是考虑能否将img存储在数据库中,虽然很多人说会造成性能问题,权当一试。
1、准备三个文件

第一个用于将图片存储为数据库字符,第二个php文件用于获取数据库字符并生成图片,第三个是文件1所使用的图片。
2、数据库设计
立即学习“PHP免费学习笔记(深入)”;
超长字符串或者二进制数据分别可以用TEXT(65535),BLOB(64k)保存,但是尝试使用二进制保存失败,便使用TEXT保存,但是一张500多kb的图片经过base64加密的字符长度高度75万!
仅仅靠一个TEXT是存不下去的,而且应该也会造成严重的性能问题,所以分割成N份保存,这里以50000字符长度为一个单位。记录imgid,方便拼接。

功能介绍:后台功能介绍1.系统管理:(1)基本信息管理包括网站名称,域名,管理员昵称,联系电话,邮箱和网站关键字等等的设置。(2) 密码修改 系统管理员密码修改(3)后台登陆记录查看2.新闻管理:(1)新闻管理包括新闻的修改删除(2)添加新闻可添加文字新闻和图片新闻,采用EWEB编辑器操作简便(3)新闻分类管理可自由的添加和删除新闻分类3.产品管理:(1)管理产品可对数据库现有进行修改和删除(2)
0
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怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号