php mysql图片存储位置_PHP把图片保存到数据库,将图片本身保存在数据库,而非保存路径...

备注

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

1.准备三个文件

515915897bfd0e70b663d4bf6f46c641.png

第一个用于将图片存储为数据库字符,第二个php文件用于获取数据库字符并生成图片,第三个是文件1所使用的图片

2.数据库设计

超长字符串或者二进制数据分别可以用TEXT(65535),BLOB(64k)保存,但是尝试使用二进制保存失败,便使用TEXT保存,但是一张500多kb的图片经过base64加密的字符长度高度75万!,仅仅靠一个TEXT是存不下去的,而且应该也会造成严重的性能问题,所以分割成N份保存,这里以50000字符长度为一个单位.记录imgid,方便拼接

7811d4b5c521518d8c32e4b3245a07ef.png

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

}

4.生成的数据

fee1245fb725abbeaed036d88c557f2b.png

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.成功生成图片

bddc8b2b7d44510c7adfbe84f4411e79.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值