当前位置: 首页 > 图文教程 > 网络编程 > PHP > 用PHP和MySQL保存和输出图片

PHP
数据库相关问题
Oracle Faq(Oracle的版本)
[FAQ]PHP中的一些常识:类篇
第1次亲密接触PHP5(2)
ftp类(myftp.php)
PHP出错界面
对盗链说再见...
example2.php
3
PHP与javascript对多项选择的处理
用PHP创建PDF中文文档
用Socket发送电子邮件(利用需要验证的SMTP服务器)
PHP:风雨欲来 路在何方?
PHP的面向对象编程
提升PHP执行速度全攻略(下)
PHP中在数据库中保存Checkbox数据(2)
用在PHP里的JS打印函数
在线竞拍系统的PHP实现框架(一)
分页显示Oracle数据库记录的类之一
分页显示Oracle数据库记录的类之二

用PHP和MySQL保存和输出图片


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 189 ::
收藏到网摘: n/a

设置数据库
我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。
MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB,MEDIUMBLOB和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。
在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。
CREATETABLEImages(PicNumintNOTNULLAUTO_INCREMENTPRIMARYKEY,ImageBLOB);

编写上传脚本
关于如何实现文件的上传,我们在这里就不再介绍了,感兴趣的读者可以参见“网页陶吧”内的相关文章。现在,我们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。

$#@60;?If($Picture!="none"){$PSize=filesize($Picture);$mysqlPicture=addslashes(fread(fopen($Picture,"r"),$PSize));mysql_connect($host,$username,$password)ordie("UnabletoconnecttoSQLserver");@mysql_select_db($db)ordie("Unabletoselectdatabase");mysql_query("INSERTINTOImages(Image)VALUES($mysqlPicture)")ordie("CantPerformQuery");}else{echo"Youdidnotuploadanypicture";}?$#@62;

这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录。下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture!="none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。

显示图片
在知道了如何将图?入数据库之后,我们就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下实现过程。因为PHP显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们无法在发出标头之后再发送其它的标头。

为了有效的解决这一问题,我们编写了两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为$#@60;IMG$#@62;标签的SRC属性。

第一个文件的简单形式可以如下:

$#@60;HTML$#@62;$#@60;BODY$#@62;$#@60;?mysql_connect($host,$username,$password)ordie("UnabletoconnecttoSQLserver");@mysql_select_db($db)ordie("Unabletoselectdatabase");$result=mysql_query("SELECT*FROMImages")ordie("CantPerformQuery");While($row=mysql_fetch_object($result)){echo"$#@60;IMGSRC=\"Second.php3?PicNum=$row-$#@62;PicNum\"$#@62;";}?$#@62;$#@60;/BODY$#@62;$#@60;/HTML$#@62;

当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的PictureID,我们可以借此从数据库中取回对应的图片并显示。

Second.php3文件如下:

$#@60;?$result=mysql_query("SELECT*FROMImagesWHEREPicNum=$PicNum")ordie("CantperformQuery");$row=mysql_fetch_object($result);Header("Content-type:image/gif");echo$row-$#@62;Image;?$#@62;

到此,我们就介绍完了使用PHP和MySQL保存和显示图片的全过程。文中所举得都是一些最简单的实例,读者可以根据自己的实际需要加入其它一些功能,使整个程序更加完善。