php向数据库中插入图片,php如何向数据库添加图片
百度开发者的云代码空间为了保证高可用,不允许用户将图片保存到代码空间中,使用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
$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如何向数据库添加图片相关推荐
- JDBC向数据库中插入BLOB类型数据
目录 1.Blob介绍 2.使用PreparedStatement向数据表中插入Blob类型字段 3.从数据表中读取Blob类型数据 4.特殊情况说明 1.Blob介绍 Blob是一种二进制数据文件, ...
- 用java向mysql数据库中插入数据为空
利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...
- 以使用QSqlQuery向数据库中插入数据为例,做一个小结
背景: 最近在使用Qt+SQLite写一个本地数据库管理程序(使用者不懂SQL),在写向数据库中插入数据的 相关的函数时,我遇到了几个问题(暂时就这些): 1.向指定字段插入指定数据时,读取到的数据都 ...
- mongodb数据库中插入数据
mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...
- qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间
我想从C++/QT应用程序执行插入到SQLite数据库. 我想要插入数据的表格中的一列是datetime(yyyy-mm-dd hh:mm:ss).使用QT和参数在SQLite数据库中插入日期时间 我 ...
- mysql十万条数据_2秒内向数据库中插入十万条数据?
怎么向数据库中快速插入十万条数据呢,当然得需要对比才能看到效果,今天给大家亲身测了两种方法对比,差别25倍左右 1,数据库用sql server 2008 r2,表结构非常简单,四个字段,建数据表的s ...
- oracle数据库插入多表,在Oracle数据库中插入嵌套表
我是PL/SQL数据库的新学习者,这是一种给apex.oracle.com上的数据库应用指定序列的练习.然后我创建了表格,但是当填充与插入的代码如下所示,应用赋予错误,表你不介意,我需要你的帮助在Or ...
- jsp中向数据库中插入当前时间的方法精确到秒
jsp中向数据库中插入当前时间的方法精确到秒 1. 如果要插入的日期是当前时间,最简单的办法就是利用oracle自带的日期函数:sysdate. 建表时,将字段默认值声明为sysdate,如下: cr ...
- Java程序向MySql数据库中插入的中文数据变成了问号
找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...
- mysql插入表情_向MySQL数据库中插入带emoji表情符的数据时报错
问题:向MySQL数据库中插入带emoji表情符的数据时报错 原因:utf8字符集不支持emoji表情符,需要改为utf8mb4字符集(utf8mb4是MySQL在5.5.3之后增加的,实际开发中建议 ...
最新文章
- Django博客系统工程创建和配置
- RMQ ST算法简介
- 理解GO CONTEXT机制
- CSS display: table-cell 用于水平垂直居中
- Arrays.asList()使用时的注意事项,这个结论同可适用于Stream.of()___Arrays.stream和Stream.of
- 01 前端HTTP协议(图解HTTP) 之 网络基础
- 美股本周第二次熔断:道指大跌近10% 费城半导体指数大跌11%
- python 函数可以作为容器对象的元素_python基础(十四):函数对象与闭包
- 190717每日一句
- 含泪推荐几款超级好用的软件
- 电脑java编译器软件下载,JDK官方网站下载安装教程 JAVA编译器
- matlab红外图像的处理,数字图像,红外图像处理,matlab实现
- app怎么嵌套vue页面_用vue做app内嵌页遇到的坑
- 车型数据api 根据车系查询车型数据
- LATEX 快速入坑系列
- Lora1278驱动V4.4.2讲解二:驱动多个SX1278芯片
- 大数据信息时代,如何防止数据泄露,大数据防泄漏解决方案
- 物联网常见概念总结(期末复习)
- 个人对于区块链技术的理解
- 科技社计算机部长竞选演讲稿,关于部长竞选演讲稿(精选6篇)