在数据库中创建表格的时候,有一个字段为image,用来保存图片,那么其类型就是blob,关于blob,百度百科是这样描述的

BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。
在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。
但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。
 
将图片或者音频等文件存入数据库的原理,特别好理解,因为它们是文件,那么就可以用函数读,然后将读出的内容保存在字符串中,然后再讲该字符串存到数据库中。
数据库如下:
 create table pic(
id tinyint primary key auto_increment not null,
image blob not null
)engine=myisam charset=utf8;

创建一个提交文件的表单,注意,提交文件的表单(form的属性method="post"  enctype="multipart/form-data")

 <form action="" method="post" enctype="multipart/form-data">
<input type="file" name="pic" >
<input type="submit" name="submit">
</form> <?php
if(!empty($_POST)){
try {
$pdo=new PDO("mysql:host=localhost;dbname=test","root","root");
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $statement=$pdo->prepare("insert into pic values (:id,:image)"); //开始读文件
$fp=fopen($_FILES['pic']['tmp_name'],"rb");
$content="";
$content=fread($fp,filesize($_FILES['pic']['tmp_name']));
fclose($fp); $statement->execute(["id"=>1,"image"=>$content]);
echo "the picture has been saved\n";
} catch (PDOException $e) {
echo "failed to save the picture";
echo $e->getMessage();
}
}
?>

可以中途输出content的内容,或者运行完成后从数据库中查看添加的内容,然而你却看不懂内容是什么,全是乱码,但是,你成功将图片保存到了数据库。

接下来,你可以将数据库中的图片“数据”,读出来,然后再以图片的形式展示一下,看是不是已提交的那张图片,代码如下:

 <?php
try {
$pdo=new PDO("mysql:host=localhost;dbname=test","root","root");
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$statement=$pdo->prepare("select * from pic");
$statement->execute();
list($id,$image)=$statement->fetch(PDO::FETCH_NUM);
header("Content-Type:image/png");
echo $image;
} catch (PDOException $e) {
echo "failed to open the picture";
echo $e->getMessage();
}
?>

运用PDO存储将图片、音频文件存入数据库的更多相关文章

  1. 将文件夹下的所有csv文件存入数据库

    # 股票的多因子分层回测代码实现 import os import pymysql # import datetime, time # from config import * database_ta ...

  2. word excel文件 存入数据库 实战

    上传: private void Insert2017(HttpContext context) { if (context.Request.Files["fileword"].C ...

  3. ASP.Net将图片以二进制方式存入数据库,并读取

    把图片转换成二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e) { string path = this.tex ...

  4. MongoDb gridfs-ngnix文件存储方案 - 图片

    http://www.cnblogs.com/wintersun/p/4622205.html 在各类系统应用服务端开发中,我们经常会遇到文件存储的问题. 常见的磁盘文件系统,DBMS传统文件流存储. ...

  5. xcode UIImageView创建、图片加载、 音频文件播放、 延迟调用

    代码创建 /** 创建UIImageView */ UIImageView * imageView=[[UIImageView alloc]init]; /** 设置尺寸位置 */ imageView ...

  6. 将音频文件转二进制分包存储到Redis(奇淫技巧操作)

    功能需求: 一.获取本地音频文件,进行解析成二进制数据音频流 二.将音频流转化成byte[]数组,按指定大小字节数进行分包 三.将音频流分成若干个包,以List列表形式缓存到redis数据库中 四.从 ...

  7. asp.net FileUpload 控件上传文件 以二进制的形式存入数据库并将图片显示出来

    图片上传事件代码如下所示: byte[] binary = upload.FileBytes; StringBuilder sqlStrSb = new StringBuilder(); sqlStr ...

  8. S3C2416裸机开发系列19_Fatfs播放录像wav音频文件

    S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩    1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...

  9. [ Android 五种数据存储方式之二 ] —— 文件存储数据

    关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. 文件可用来存放大量数据,如文本.图片.音 ...

随机推荐

  1. Perfect Pth Powers pku-1730(筛+合数分解)

    题意:x可以表示为bp, 求这个p的最大值,比如 25=52, 64=26,  然后输入x 输出 p 就是一个质因子分解.算法.(表示数据上卡了2个小时.) 合数质因子分解模板. ]; ]; ; ;n ...

  2. windos 系统文件包含

    解决VS2013找不到windows.h文件方法 右键属性管理器添加 包含路径(依据sdk安装目录,我的是64位系统) C:\Program Files (x86)\Microsoft SDKs\Wi ...

  3. LabelImg 图像图像标注工具

    https://github.com/tzutalin/labelImg windos版本请不要把存放在中文目录下,否则打不开.

  4. Apache Ant安装 验证

    1.下载Apache Ant 去官网下载ant,官网地址:http://ant.apache.org/ 我下载的是apache-ant-1.10.1-bin.zip 直接解压,放到制定目录下,如C:\ ...

  5. 配置Linux下vim自动缩进等功能

    从终端打开配置文件: vim ~/.vimrc 添加如下代码: set tabstop=4 set softtabstop=4 set shiftwidth=4 set autoindent set ...

  6. Qt中静态变量使用方法

    静态变量可以在各个页面之前使用 先定义一个用于存放静态变量的类 例如datavar 在datavar.h中添加如下代码 #ifndef DATAVAR_H #define DATAVAR_H #inc ...

  7. AI 卷积神经网络

    卷积神经网络(Convolutional Neural Network,简称CNN),顾名思义,使用了卷积.不过,这里用到的卷积和数学中的不完全一致. 1.连续卷积 2.离散卷积 3.二维离散卷积 4 ...

  8. Winform 基础一 panel

    一 居上.居中.居下 二 添加子控件 三 适应不同分辨率 四 内容超出,显示滚动条 一 .居上.居中.居下 二.添加子页面 Form7 childFrm = new Form7(); childFrm ...

  9. Tensorflow[目录结构]

    1 - Tensorflow源码目录结构 基于2018年5月28日github的tensorflow源码,即1.8版本 第一层: tensorflow: 核心代码目录. third_party:第三方 ...

  10. odoo学习之弹框显示

    按条件隐藏: <xpath expr="//group[1]" position="attributes"> <attribute name= ...