在数据库中创建表格的时候,有一个字段为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. C#泛型约束where T : class 解释

    这是参数类型约束,指定T必须是Class类型. .NET支持的类型参数约束有以下五种:where T : struct                               | T必须是一个结构 ...

  2. (14)Python类

  3. Codeforces Round #245 (Div. 2)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/yew1eb/article/details/25609981 A Points and Segmen ...

  4. MATLAB中floor、round、ceil、fix区别

    Matlab取整函数有: fix, floor, ceil, round.具体应用方法如下:fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1;floor,顾名思义,就是地板,所以 ...

  5. java语言基础1问题汇总

    1.一个Java类文件中真的只能有一个公有类吗? 程序实验: public class test1 { public static void main( String args[] ){ } publ ...

  6. SkylineGlobe 如何实现绘制圆形Polygon和对图层的圆形范围选择查询

    //结束绘制圆形之前,得到Polygon var pos = gPolyObj.Position; var bufferR = gPolyObj.Radius; var cVerticesArray ...

  7. TerraExplorer Add-ons 和TEZ使用说明

    1.    概述 Skyline提供了丰富的API,用户可以根据不同实际需求,进行二次开发封装,实现各种功能的扩展和定制.当我们开发了各种功能页面或者应用程序后,如何将它们快速嵌入到TerraExpl ...

  8. ESP8266开发综合篇(LUA开发-视频教程总揽)

    为了解决基础教程简单入门但不实用,项目方案非常实用但比较难的问题,开始推出8266开发综合篇 综合篇涉及到AT,LUA,SDK,LUA(sdk)开发,LUA和SDK开发会同步进行,后期再整理AT指令的 ...

  9. 如何利用”七牛云”在UEditor实现图片的上传和浏览

    在学习之前,我参考了朋友些的一篇关于这个功能实现的文章,非常不错.大家可以参考:http://www.cnblogs.com/John-Marnoon/p/5818528.html#3501846 里 ...

  10. 【转】Java生成图片验证码

    原文转自:http://blog.csdn.net/ruixue0117/article/details/22829557 看了挺多图片验证码的代码,感觉没什么长的好看点的,就自己动手写了个,写完发现 ...