PHP使用BLOB存取图片信息实例

PHP使用BLOB存取图片信息实例

BLOB介绍

BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。

mysql BLOB类型

MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。
类型 大小(单位:字节)
TinyBlob 最大255
Blob 最大65K
MediumBlob 最大16M
LongBlob 最大4G
linux修改etc/my.cnf
[mysqld]
max_allowed_packet = 16M //不同于[mysqldump]下的max_allowed_packet

注意: blob是mysql数据库保留字,请务必不要用于字段名


创建数据库

CREATE TABLE IF NOT EXISTS `myimg` (  
   `imgid` tinyint(3) NOT NULL AUTO_INCREMENT,  
   `imgtype` varchar(25) NOT NULL DEFAULT ‘‘,  
   `imgblob` mediumblob NOT NULL,  
    PRIMARY KEY (`imgid`)  
)

PHP文件转二进制代码

数据库读取更新插入都是一样的,就不写了,这里只写PHP上传图片转二进制的关键代码

<?php  
if(count($_FILES) > 0) {  
    if(is_uploaded_file($_FILES[‘upimg‘][‘tmp_name‘])) {
    // 转成二进制
    $imgBlob =addslashes(file_get_contents($_FILES[‘upimg‘][‘tmp_name‘]));  
}  

HTML代码

上传文件表单必须定义enctype

enctype="multipart/form-data" 

完整代码

<html>  
<head>  
    <titel>上传文件到Blob</title>
</head>  
<body>  
    <form name="formImage" enctype="multipart/form-data" action="" method="post">  
        <label>上传文件:</label>
        <input name="upimg" type="file"/>  
        <input type="submit" value="提交"/>  
    </form>  
</div>  
</body>  
</html>  

读取二进制图片

在浏览器上显示BLOB图像,我们必须:
1、从MySQL BLOB获得图像数据和类型
2、将类型设置为图像(image/jpg, image/gif, …)使用PHP header()函数。
3、输出图像内容。

php完整代码

文件名:imageView.php

<?php  
$conn = mysql_connect("localhost", "root", "");  
mysql_select_db("myimg") or die(mysql_error());  
if(isset($_GET[‘image_id‘])) {  
   $sql = "SELECT imgtype,imgblob FROM myimg WHERE imgid=".$_GET[‘imgid‘];  
   $result = mysql_query("$sql") or die("<b>Error:</b>SQL语句错误<br/>".mysql_error());  
   $row = mysql_fetch_array($result);  
   header("Content-type: " . $row["imageType"]);  
   echo $row["imageData"];  
}  
mysql_close($conn);  
?>

HTML代码

<img src="imageView.php?image_id=<?php echo $row["imageId"]; ?>" />

感谢浏览收看本文,希望可以对php开发者有帮助。
PHP BloB完整实例参考网络文章
——http://blog.csdn.net/u012275531/article/details/17914999

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。