php中如何从数据库中读取图片?

php中如何从数据库中读取图片?,第1张

<?php

//将图片存进数据库再读出,注意存储图片的字段类型必须为blob

$user=’root’

$password=’root’

$db=’test’

$connect=mysql_connect(‘localhost’,$user,$password)

mysql_set_charset(‘utf8′,$connect)

mysql_select_db($db)

$photo = “0x”.bin2hex(file_get_contents(“./test.jpg”))

$sql=”INSERT INTO `test`.`test` (`photo`) VALUES ($photo)”//$photo不需要用引号,切记

mysql_query($sql)

//$result=mysql_query(“SELECT *

//FROM `test`

//LIMIT 0 , 30〃)

//$img=mysql_fetch_array($result)

//echo $img['photo']

?>

以下是大致的原理 你看看

在我们设计和制作网站的过程中,有时把图片保存到数据库中要比存成文件的形式更加方便。PHP和MySQL这对黄金组合可以很容易的实现上述功能。在本文中,我们将会向读者介绍如何把图片保存到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。

<?

If($Picture != "none") { $PSize = filesize($Picture)

$mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize))

mysql_connect($host,$username,$password) or die("Unable to connect to SQL server")

@mysql_select_db($db) or die("Unable to select database")

mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')")

or die("Can't Perform Query")

}

else

{ echo"You did not upload any picture"}

?>

这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录。

下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture != "none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。

显示图片

在知道了如何将图片存入数据库之后,我们就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下实现过程。

因为PHP显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们无法在发出标头之后再发送其它的标头。

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

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

<HTML>

<BODY>

<?

mysql_connect($host,$username,$password)

or die("Unable to connect to SQL server")

@mysql_select_db($db) or die("Unable to select database")

$result=mysql_query("SELECT * FROM Images") or die("Can't Perform Query")

While($row=mysql_fetch_object($result)) {

echo "<IMG SRC=\"Second.php3? PicNum=$row->PicNum\">"

}

?>

</BODY>

</HTML>

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

Second.php3文件如下:

<?

$result=mysql_query("SELECT * FROM Images WHERE PicNum=$PicNum")

or die("Can't perform Query")$row=mysql_fetch_object($result)

Header( "Content-type: image/gif")echo $row->Image

?>

php是采用二进制形式存储图片及读取显示的,首先通过代码创建数据表,然后上传图片服务器再通过浏览器显示,具体编程代码举例:

1、首先需要创建数据表,具体代码如下图所示。

2、然后写上传图片到服务器的页面 upimage.html用来将图片上传数据库,如下图所示代码。

3、处理图片上传的php upimage.php文件,如下图所示图片已储存到数据库。

4、显示图片的php getimage.php文件,为了看一下效果提前把ID写入代码。

5、预览网站从数据库中提取了图片,并显示到页面上。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9946572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存