Chinaunix

标题: 用PHP和MySQL保存和输出图片 [打印本页]

作者: bxuu    时间: 2006-07-19 17:01
标题: 用PHP和MySQL保存和输出图片



设置数据库
    通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。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。
   
   
   
    这样,就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,会在数据库的错误日志中找到相应的记录。
   
    下面,简单说明一下上述脚本程序。首先,我们通过“If($Picture != "none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。
   
  显示图片
    在知道了如何将图片存入数据库之后,就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面介绍实现过程。
   
  因为PHP显示图片需要发送相应的标头,所以就会面临这样一个问题,那就是一次只能显示一副图片,因为无法在发出标头之后再发送其它的标头。
   
  为了有效的解决这一问题,编写两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为标签的SRC属性。
   
  第一个文件的简单形式可以如下:
   
    PicNum\">"; } ?>   
   
    当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,可以借此从数据库中取回对应的图片并显示。
   
  Second.php3文件如下:
   
  Image; ?>

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/5923/showart_142741.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2