百度开发者的云代码空间为了保证高可用,不允许用户将图片保存到代码空间中,使用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如何向数据库添加图片相关推荐

  1. JDBC向数据库中插入BLOB类型数据

    目录 1.Blob介绍 2.使用PreparedStatement向数据表中插入Blob类型字段 3.从数据表中读取Blob类型数据 4.特殊情况说明 1.Blob介绍 Blob是一种二进制数据文件, ...

  2. 用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  3. 以使用QSqlQuery向数据库中插入数据为例,做一个小结

    背景: 最近在使用Qt+SQLite写一个本地数据库管理程序(使用者不懂SQL),在写向数据库中插入数据的 相关的函数时,我遇到了几个问题(暂时就这些): 1.向指定字段插入指定数据时,读取到的数据都 ...

  4. mongodb数据库中插入数据

    mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...

  5. qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间

    我想从C++/QT应用程序执行插入到SQLite数据库. 我想要插入数据的表格中的一列是datetime(yyyy-mm-dd hh:mm:ss).使用QT和参数在SQLite数据库中插入日期时间 我 ...

  6. mysql十万条数据_2秒内向数据库中插入十万条数据?

    怎么向数据库中快速插入十万条数据呢,当然得需要对比才能看到效果,今天给大家亲身测了两种方法对比,差别25倍左右 1,数据库用sql server 2008 r2,表结构非常简单,四个字段,建数据表的s ...

  7. oracle数据库插入多表,在Oracle数据库中插入嵌套表

    我是PL/SQL数据库的新学习者,这是一种给apex.oracle.com上的数据库应用指定序列的练习.然后我创建了表格,但是当填充与插入的代码如下所示,应用赋予错误,表你不介意,我需要你的帮助在Or ...

  8. jsp中向数据库中插入当前时间的方法精确到秒

    jsp中向数据库中插入当前时间的方法精确到秒 1. 如果要插入的日期是当前时间,最简单的办法就是利用oracle自带的日期函数:sysdate. 建表时,将字段默认值声明为sysdate,如下: cr ...

  9. Java程序向MySql数据库中插入的中文数据变成了问号

    找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...

  10. mysql插入表情_向MySQL数据库中插入带emoji表情符的数据时报错

    问题:向MySQL数据库中插入带emoji表情符的数据时报错 原因:utf8字符集不支持emoji表情符,需要改为utf8mb4字符集(utf8mb4是MySQL在5.5.3之后增加的,实际开发中建议 ...

最新文章

  1. Django博客系统工程创建和配置
  2. RMQ ST算法简介
  3. 理解GO CONTEXT机制
  4. CSS display: table-cell 用于水平垂直居中
  5. Arrays.asList()使用时的注意事项,这个结论同可适用于Stream.of()___Arrays.stream和Stream.of
  6. 01 前端HTTP协议(图解HTTP) 之 网络基础
  7. 美股本周第二次熔断:道指大跌近10% 费城半导体指数大跌11%
  8. python 函数可以作为容器对象的元素_python基础(十四):函数对象与闭包
  9. 190717每日一句
  10. 含泪推荐几款超级好用的软件
  11. 电脑java编译器软件下载,JDK官方网站下载安装教程 JAVA编译器
  12. matlab红外图像的处理,数字图像,红外图像处理,matlab实现
  13. app怎么嵌套vue页面_用vue做app内嵌页遇到的坑
  14. 车型数据api 根据车系查询车型数据
  15. LATEX 快速入坑系列
  16. Lora1278驱动V4.4.2讲解二:驱动多个SX1278芯片
  17. 大数据信息时代,如何防止数据泄露,大数据防泄漏解决方案
  18. 物联网常见概念总结(期末复习)
  19. 个人对于区块链技术的理解
  20. 科技社计算机部长竞选演讲稿,关于部长竞选演讲稿(精选6篇)

热门文章

  1. 华为车BU感知定位笔试题
  2. mysql备份耗时太长_Mysql数据不算大,备份却非常慢
  3. 多线程怎么保证数据安全_「软帝学院」Java挑战者专栏:多线程详解2
  4. ESXI定时关机脚本
  5. 【进阶一】Python实现MDCVRP常见求解算法——差分进化算法(DE)
  6. java callable 详解_Java Callable与Future线程详解
  7. 最强大的漏洞扫描与分析软件(Nessus)
  8. 《失控》之八--封闭系统
  9. vivo手机使用应用沙盒一键修改imsi数据
  10. kt-connect使用-k8s流量代理