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

PHP
php 清除网页病毒的方法
php 远程关机操作的代码
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
PHP 出现乱码和Sessions验证问题的解决方法!
php2html php生成静态页函数
中英文字符串翻转函数
php escape URL编码
PHP Google的translate API代码
php 文件状态缓存带来的问题
linux下 C语言对 php 扩展
php mssql 数据库分页SQL语句
php IP及IP段进行访问限制的代码
PHP 采集程序 常用函数
php 设计模式之 单例模式
php 设计模式之 工厂模式
php xml-rpc远程调用
php 获取完整url地址
PHP MSSQL 存储过程的方法
PDP Document 代码注释规范
PHP HTML代码串截取代码

用PHP和MySQL保存和输出图片


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