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

PHP
坏狼php学习 计数器实例代码
PHP学习一(基础)
PHP学习 运算符与运算符优先级
PHP学习 mysql
用PHP伪造referer突破网盘禁止外连的代码
php utf-8转unicode的函数
php代码出现错误分析详解
PHP伪静态写法附代码
PHP伪静态页面函数附使用方法
php下汉字转化为拼音的代码
js下函数般调用正则的方法附代码
php 前一天或后一天的日期
php 在线打包_支持子目录
php GD绘制24小时柱状图
php下检测字符串是否是utf8编码的代码
php5中date()得出的时间为什么不是当前时间的解决方法
[原创]效率较高的php下读取文本文件的代码
php文本操作方法集合比较
PHP远程连接MYSQL数据库非常慢的解决方法
PHP写入WRITE编码为UTF8的文件的实现代码

用PHP和MySQL保存和输出图片


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 236 ::
收藏到网摘: 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保存和显示图片的全过程。文中所举得都是一些最简单的实例,读者可以根据自己的实际需要加入其它一些功能,使整个程序更加完善。