用PHP实现把图象上传到数据库

王朝php·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

有什么问题请与我联系:http://www.webjx.com web@webjx.com

转载请注明出处

今天教给大家如何用PHP实现把图象上传到MYSQL数据库中。 在这个教程中我们需要建立3个PHP文件:

readdir.php - 把图片放到数据库的代码

image.php - 显示实际图片的代码

view.php - 显示你如何调用数据库中的图片的代码

1.创建一个数据库

CREATE TABLE `images` (

`imgid` INT NOT NULL AUTO_INCREMENT ,

`sixfourdata` LONGTEXT NOT NULL ,

PRIMARY KEY ( `imgid` )

);

READDIR.PHP

具体的内容:

<?

$dbcnx = mysql_connect("localhost", "username", "password");

mysql_select_db("base64imgdb");

?>

'我们需要打开一个目录

"./"

'readdir.php 文件定位于这个目录:

$path = "./";

$dir_handle = opendir($path) or die("Unable to open directory $path");

下面是比较难的部分,大家需要好好研究一下:把图象分类,并且读出正在使用的一些数据

fopen

'转换

base64_encode

' 插入到表里

<?

while ($file = readdir($dir_handle)) {

$filetyp = substr($file, -3);

if ($filetyp == 'gif' OR $filetyp == 'jpg') {

$handle = fopen($path . "/" . $file,'r');

$file_content = fread($handle,filesize($path . "/" . $file));

fclose($handle);

$encoded = chunk_split(base64_encode($file_content));

$sql = "INSERT INTO images SET sixfourdata='$encoded'";

mysql_query($sql);

}

}

?>

关闭设置的目录,然后处理:

<?

closedir($dir_handle);

echo("complete");

mysql_close($dbcnx);

?>

读出图片的代码:IMAGE.PHP

这段代码比较难,我们要好好看看

<?

$dbcnx = mysql_connect("localhost", "username", "password");

mysql_select_db("base64imgdb");

?>

我们读出图片使用的代码image.php?img=x:

<?

$img = $_REQUEST["img"];

?>

之后我们需要连接数据库,然后读出

<?

$result = mysql_query("SELECT * FROM images WHERE imgid=" . $img . "");

if (!$result) {

echo("<b>请求错误: " . mysql_error() . "</b>");

exit();

}

while ($row = mysql_fetch_array($result)) {

$imgid = $row["imgid"];

$encodeddata = $row["sixfourdata"];

}

?>

<?

mysql_close($dbcnx);

echo base64_decode($encodeddata);

?>

在这里我们要理解base64-encoded 图象数据格式。

"让我们来看看具体的图片吧!" VIEW.PHP

image.php?img=1

image.php?img=357

<img src='image.php?img=1' border="0" alt="">

看看完整的一个例子吧!

readdir.php:

<?

###############################

# DB CONNECTION

# CHANGE THESE VALUES

###############################

$dbcnx = mysql_connect("localhost", "username", "password");

mysql_select_db("base64imgdb");

$path = "./";

$dir_handle = opendir($path) or die("Unable to open directory $path");

while ($file = readdir($dir_handle)) {

$filetyp = substr($file, -3);

if ($filetyp == 'gif' OR $filetyp == 'jpg') {

$handle = fopen($file,'r');

$file_content = fread($handle,filesize($file));

fclose($handle);

$encoded = chunk_split(base64_encode($file_content));

$sql = "INSERT INTO images SET sixfourdata='$encoded'";

mysql_query($sql);

}

}

closedir($dir_handle);

echo("complete");

mysql_close($dbcnx);

?>

image.php:

<?

$dbcnx = mysql_connect("localhost", "username", "password");

mysql_select_db("base64imgdb");

$img = $_REQUEST["img"];

$result = mysql_query("SELECT * FROM images WHERE imgid=" . $img . "");

if (!$result) {

echo("<b>Error performing query: " . mysql_error() . "</b>");

exit();

}

while ($row = mysql_fetch_array($result) ) {

$imgid = $row["imgid"];

$encodeddata = $row["sixfourdata"];

}

mysql_close($dbcnx);

echo base64_decode($encodeddata);

?>

And view.php (i shouldnt need to post this..)

<html>

<body>

..

<img src='image.php?img=1' border="0" alt="">

..

</body>

</html>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航