您的位置:首页 > 编程语言 > PHP开发

PHP将图片存入MYSQL

2009-11-17 10:02 302 查看
完整的实现了PHP将图片存入MYSQL

前提:
1 首先必须拥有PHP的运行环境,另外还得有MYSQL数据库
2 如果文件不能上传成功请检查pics是否是可写的权限

首先先把pic2db.rar文件解压到PHP可以运行目录下。

其次在MYSQL中建立一个数据库:pic2db,然后在该数据库下建立一个表,表结构为:

CREATE TABLE `pic` (
`pic_id` int(11) NOT NULL auto_increment,
`pic_userid` int(11) NOT NULL,
`pic_content` longblob NOT NULL,
PRIMARY KEY (`pic_id`)
)

再接着修改common_db.php中的数据库连接的用户名和密码,根据你MYSQL设置的来

最后运行upload.php文件进行上传,而display_all.php是显示数据库中所有的图片

图片上传upload.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>上传</title>
</head>

<body>
<form action="post_action.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<p> </p>
<p>
<label></label>
<label>
<input type="file" name="file"  />
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="提交" />
</label>
</p>
<p> </p>
</form>
</body>
</html>


连接数据库的common_db.php:

<?php

/**
* 连接数据库的函数
* 连接成功将会返回一个连接资源
* @return mix
*/
function getLink() {
$link = mysql_connect("localhost","root","") or die("数据库服务器连接失败!");
if(!mysql_select_db("crm",$link)) die("数据库连接失败!");
return $link;
}
?>


处理上传的post_action.php:

<?php

/**
* 本文件是将图片文件上传到服务器端
* 并且读取该文件的二进制内容存入到MYSQL的
* pic表中longblob字段
*
*/

//强制页面使用gb2312编码
header("Content-Type: text/html; charset=gb2312");

if(!isset($_FILES['file'])){
echo "no upload";
die;
}
//首先将文件上传到pics文件夹中
list($flag3,$msg3)=uploaderFILES($_FILES['file']);
//如果成功
if($flag3==true) {
$file3=$msg3;
$PSize = filesize($msg3);
//取得文件内容
$mysqlPicture = addslashes(fread(fopen($msg3, "r"), $PSize));
//构造SQL语句并保存到数据库中
$sql="INSERT INTO `pic` (`pic_userid` , `pic_content` ) VALUES ( '2', '".$mysqlPicture."')";
include_once("common_db.php");
$link=getLink();
mysql_query($sql,$link);
unlink($msg3);//删除pics文件夹中该文件
echo "上传成功!<br><a href="display_all.php" mce_href="display_all.php" >查看图片</a>";
}else{
//失败提示错误原因
echo $msg3;
}

/**
* 文件上传的自定义 函数
* Enter description here...
* @param $file
* @param $upload_dir 存放路径
* @return array
*/
function uploaderFILES($file,$upload_dir="pics/"){
$file_types_array=array("jpg","gif","png","jpeg");
$max_file_size = 1048576;

if($file["error"]!=UPLOAD_ERR_OK) return array(false,"文件上传出现错误!");
if($file["name"]=="")return array(false,"文件上传名为空!");
if($file["size"]>$max_file_size) return array(false,"文件大小太大了!");
$oldFilename = $file["name"];
$filename = explode(".",$oldFilename);
$filenameext = $filename[count($filename)-1];

if(!in_array($filenameext,$file_types_array)) return array(false,"不是有效的图片文件!");
$newFilename="_".time()."_".rand(10000,20000).".".$filenameext;

if(move_uploaded_file($file["tmp_name"], $upload_dir.'/'.$newFilename)){
return array(true, $upload_dir.$newFilename);
}else{
return array(false,"文件:$oldFilename 没有上传成功!");
}

}

?>


显示所有图片的display_all.php:

<?php

/**
* 取得数据库中pic表里的图片内容,然后循环显示出来
* 注意这里不是真正显示图片的地方这里只是显示一个
* 图片的HTML标签<img src="display_one.php?pic_id=n" mce_src="display_one.php?pic_id=n" />
* 真正的图片内容在display_one.php中
*
*/

$sql="select *  from   `pic` ";
include_once("common_db.php");
$link=getLink();
$res=mysql_query($sql,$link);

$i=0;
//循环显示所有图片
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
$i++;
echo"图片".$i.":<br>";
echo "<IMG SRC="/" mce_SRC="/""display_one.php?pic_id=".$row['pic_id']."/" ><p>";
}

?>


图片内容的文件:

<?php

//显示一个图片的内容
//文件头是image/gif,这样在<IMG SRC="display_one.php?pic_id=1" mce_SRC="display_one.php?pic_id=1" />就可以显示图片了

if(!isset($_GET['pic_id'])) die;
$sql="select *  from   `pic` where pic_id= ".intval($_GET['pic_id']);
include_once("common_db.php");
$link=getLink();
$res=mysql_query($sql,$link);

$row = mysql_fetch_array($res, MYSQL_ASSOC) ;
Header( "Content-type: image/gif");
echo $row['pic_content'];

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: