使用mysql的blob类型存取图片

设置数据库   
  我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。 
  MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB,   MEDIUMBLOB   和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。 
  在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。 
  CREATE   TABLE   Images   (   PicNum   int   NOT   NULL   AUTO_INCREMENT   PRIMARY   KEY,   Image   BLOB   );   
编写上传脚本   
  关于如何实现文件的上传,我们在这里就不再介绍了,感兴趣的读者可以参见“网页陶吧”内的相关文章。现在,我们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。 
<?   
If($Picture   !=   "none ")   {   
$PSize   =   filesize($Picture);   
$mysqlPicture   =   addslashes(fread(fopen($Picture,   "r "),   $PSize));   
mysql_connect($host,$username,$password)   or   die( "Unable   to   connect   to   SQL   server "); 
@mysql_select_db($db)   or   die( "Unable   to   select   database ");   
mysql_query( "INSERT   INTO   Images   (Image)   VALUES   ($mysqlPicture) ")   or   die( "Cant   Perform   Query ");   
}else   {   
echo "You   did   not   upload   any   picture ";   
}   
?>   
  这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录。 
  下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture   !=   "none ")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。 
显示图片   
  在知道了如何将图?   入数据库之后,我们就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下实现过程。 
因为PHP显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们无法在发出标头之后再发送其它的标头。 
为了有效的解决这一问题,我们编写了两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为 <IMG> 标签的SRC属性。 
第一个文件的简单形式可以如下: 
<HTML>   <BODY>   
<?   
mysql_connect($host,$username,$password)   or   die( "Unable   to   connect   to   SQL   server "); 
@mysql_select_db($db)   or   die( "Unable   to   select   database "); 
$result=mysql_query( "SELECT   *   FROM   Images ")   or   die( "Cant   Perform   Query ");   
While($row=mysql_fetch_object($result))   { 
echo   " <IMG   SRC=/ "Second.php3?   PicNum=$row-> PicNum/ "> ";   
}   ?> 
</BODY>   </HTML>   
  当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture   ID,我们可以借此从数据库中取回对应的图片并显示。 
Second.php3文件如下: 
<?   
$result=mysql_query( "SELECT   *   FROM   Images   WHERE   PicNum=$PicNum ")   or   die( "Cant   perform   Query ");   
$row=mysql_fetch_object($result);   
Header(   "Content-type:   image/gif "); 
echo   $row-> Image;   
?>   
  到此,我们就介绍完了使用PHP和MySQL保存和显示图片的全过程。文中所举得都是一些最简单的实例,读者可以根据自己的实际需要加入其它一些功能,使整个程序更加完善。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值