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

PHP
php ignore_user_abort与register_shutdown_function 使用方法
PHP写MySQL数据 实现代码
phpmyadmin 访问被拒绝的真实原因
PHP 程序员也要学会使用“异常”
php MYSQL 数据备份类
PHP 类型转换函数intval
php 图像函数大举例(非原创)
PHP 输出缓存详解
PHP COOKIE设置为浏览器进程
ie6 动态缩略图不显示的原因
php 将bmp图片转为jpg等其他任意格式的图片
discuz7 phpMysql操作类
一个php Mysql类 可以参考学习熟悉下
php 分页函数multi() discuz
学习discuz php 引入文件的方法DISCUZ_ROOT
php fckeditor 调用的函数
mysql 性能的检查和优化方法
PHP 高级课程笔记 面向对象
PHP 多进程 解决难题
php 404错误页面实现代码

用PHP和MySQL保存和输出图片


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