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 <$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把图片保存到数据库,将图片本身保存在数据库,而非保存路径的更多相关文章
- C# 保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox,解决报错 “无效参数”
下面是两段关键代码: /// <summary> /// 将一张图片转换为字节 /// </summary> /// <param name="img" ...
- C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体
//浏览图片 private void btnUp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialo ...
- C#实体图片下载与批量下载(自动保存功能)
新工作,第一个小任务,制作一个点击下载图片的功能.并提供批量下载操作.图片是字节流的形式,存放在数据库中的. 为了避免直接从数据库中,下载失败,会在本地保存一份. 进行压缩的是SharpZip这个压缩 ...
- PHP部分--图片上传服务器、图片路径存入数据库,并读取
html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- 【matlab】用matlab 保存带标记图像、图片的方法总结
最近看了一些用matlab对图形图片进行保存的帖子和资源,关于图像保存的方法给大家分享一下这些方法是大家所使用方法的一个总结. 如今常用的方法有三种printf,imwrite,saveas下面分别介 ...
- asp.net.web如何简单生成和保存二维码图片的例子
首先,要有生成二维码图片,需要二维码生成的类库,到官网下载thoughtWorks.QRCode.dll 例子的步骤: 1.创建项目QRCodeTest1,选择asp.net.web窗体应用程序
- Oracle数据库插入图片和读取图片
package com.basicSql.scroll_page; import java.io.File; import java.io.FileInputStream; import java.i ...
- MySQL数据库写入图片并读取图片显示到JLabel上的详解
相较于Oracle,MySQL作为一个轻量级的开源的数据库,可谓是大大简化了我们的操作.这次我就来写一个关于数据库存入图片,获取图片的例子吧,也为了今后的复习使用.(我们一般采取存入路径的方式,而不是 ...
- 用 opencv和numpy进行图片和字符串互转,并保存至 json
用 opencv和numpy进行图片和字符串互转,并保存至 json 转至 https://zhuanlan.zhihu.com/p/27349847 受 用 base64 进行图片和字符串互转,并保 ...
随机推荐
- 用JS写的一个简单的时钟
没什么技术含量,单纯的想传上去.手痒了 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- jeecms v9 vue环境搭建
一.安装NODEJS运行环境 前往nodejs官网下载nodejs,https://nodejs.org/en/ ,建议下载最新稳定版的,下载后安装即可,下载选择类似如下 安装完毕之后,在cmd中输入 ...
- 基于baseline和stochastic gradient descent的个性化推荐系统
文章主要介绍的是koren 08年发的论文[1], 2.1 部分内容(其余部分会陆续补充上来). koren论文中用到netflix 数据集, 过于大, 在普通的pc机上运行时间很长很长.考虑到写文 ...
- 关于mybatis对实体类参数绑定参数的问题
dao层的代码: public interface SupplierMapper extends BaseMapper<SupplierDbo>{ /*List<SupplierDb ...
- Aspose破解版本dll
下面是Aspose破解版本dll,并不是最新版本,有需要的可以下载使用: 下载Aspose各种破解版dll
- 可怜的baidu,可怜的音库
baidu词典中用的中文音库竟然全都是汉典的中文音库 真可怜,baidu这么大个公司竟然连着1250个发音都懒得录 汉典的音库布都是同一格式,导致一部分音频文件MCI函数无法播放 真他妈可 ...
- [转]深入WPF--Style
Style 用来在类型的不同实例之间共享属性.资源和事件处理程序,您可以将 Style 看作是将一组属性值应用到多个元素的捷径. 这是MSDN上对Style的描述,翻译的还算中规中矩.Style(样式 ...
- 全栈之路-杂篇-前端Http请求封装优化
在项目开发过程中,代码的封装是很有必要的,我觉得这是程序员进阶的一个重要的技能,不会封装代码,你的代码看起来乱的一批,基本上不能维护,像一次性塑料袋一样,用完一次就失去了价值,这同时也会无缘无故的增加 ...
- 后缀数组(SA)及height数组
最近感觉自己越来越蒟蒻了--后缀数组不会,费用流不会-- 看着别人切一道又一道的题,我真是很无奈啊-- 然后,我花了好长时间,终于弄懂了后缀数组. 后缀数组是什么? 后缀SASASA数组 给你一个字符 ...
- (转载)My97 datepicker使用指南
这里先显示大家都可以看到的My97DatePicker的用法: WdatePicker日历控件使用方法(http://www.cnblogs.com/yuhanzhong/archive/2011/0 ...