[转帖]上传图片存入MYSQL并读出的方法 |
经常有朋友问如何将图片保存到MYSQL数据库并如何读取的问题,今天在网上找到一篇文章,并有代码,代码我没有亲自测试,不知道是否可以准确运行。有需要的朋友可以看一下。
另外,因为保存图片到数据库占用很大的容量,对宝贵的数据库资源太浪费,所以一般情况下不建议将图片保存到数据库中。可以将图片存储到目录中,用数据库存储路径和文件名.
用到的数据表
CREATE TABLE `image_table` (
`id` int(4) NOT NULL auto_increment,
`image` blob NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
上传图片存储到MySQL:
<?php
// pic_database_upload.php By Bleakwind
$Host = "localhost";
$User = "bleakwind";
$Password = "bleakwind";
$Database = "test";
mysql_connect($Host,$User,$Password) or die("Could not connect:" . mysql_error());
mysql_select_db($Database) or die("Could not select database!");
if(!empty($_FILES['image']['name'])){
$image_data = addslashes(fread(fopen($_FILES['image']['tmp_name'], "rb"), filesize($_FILES['image']['tmp_name'])));
$sql = "INSERT INTO `image_table` (`image`) VALUES ('".$image_data."')";
if(mysql_query($sql)){ echo "成功!"; }else{ echo "失败!"; }
}
?>
<form action="" method="post" name="form" enctype="multipart/form-data">
<input type="file" name="image" size="30">
<input type="submit" value="Upload">
</form>
从数据库中取出图片.
注意:
1.可能具体应用你还要分配一个字段来存储图片类型,这样下面的header( "content-type: image/gif");这句的gif用相应的类型替换掉.
2.如果想取出多个图片可以将下面的文件存成一个文件,在另外的文件遍历ID后调用此文件输出.
CODE
<?php
// pic_database_output.php By Bleakwind
header( "content-type: image/gif");
$Host = "localhost";
$User = "bleakwind";
$Password = "bleakwind";
$Database = "test";
$id = 1;
mysql_connect($Host,$User,$Password) or die("Could not connect:" . mysql_error());
mysql_select_db($Database) or die("Could not select database!");
$sql = "SELECT * FROM `image_table` WHERE `id`=" . $id;
$result = mysql_query($sql) or die("Could not perform query!");
$row = mysql_fetch_array($result);
echo $row['image'];
?>
|
|
|