上传和显示图片
时间:2006-04-01 来源:apachephp
php保存图片
保存上传图片有两种方法。一种是在mysql数据库中保存图片文件,另一种是在mysql中只保存文件名,而图片文件保存在php.ini配置文件中设置的upload临时目录,也就是upload_tmp_dir参数中。
一、为了用mysql保存图片文件,我们需要建立一个数据表用来保存数据。下面在数据库(test)建立名为image的数据表,该表只有两个字段,一个字段为用户名,一个用来保存图片,建立image表的SQL句如下:
use test;
create table image(
id varchar(20) not null,
photo longlob,
primary key (id)
);
Notice: photo用来保存图片文件,因此需要定义为longblob型数据。
此外,我们还需要建立一个简单的网页界面,用来上传图片。
下面为上传图片的代码:
上传图片范例
username
the pthoto:
二、在mysql中保存文件的方法
在mysql中保存图片文件的程序命名为save_image.php 代码如下:
$conn=mysql_connect("localhost","dbuser","dbpwd");
mysql_db_select("test",$conn);
?>
$id=$_POST['id'];
$check_sql="select * from image where id = 'id'";
$check_re=mysql_query($check_sql);
$num=mysql_num_rows($check_re);
if($num!=0){
echo "";
echo "该用户名已经存在,请选择另一个
";
echo "上传失败!
返回";
echo "";
exit();
}
// 方法一:在mysql中保存图片文件,
// 如果有图片文件,打开图片文件,将图片文件中的数据用函数
// addslashes处理,然后传递给变量$data,
// addslashes函数是给字符串加入斜线,使字符串能够顺利写入数据库中
// 这样变量$data 中保存的就是图片文件的数据了
if ($photo""){
$fp=fopen($photo,"r");
$data=addslashes(fread($fp,filesize($photo)));
}
$password=md5($password);
$sql="insert into image (id,photo) values('$id','$data')";
mysql_query($sql,$conn) or die ("插入数据失败: ".mysql_error());
// 关闭连接
mysql_close($conn);
// 显示上传图片成功
// 重定向到注册成功页面
header("Location:display_image1.php?id=$id");
本程序需要连接mysql数据库,然后判断用户输入的用户是否在数据库中已经存在,如果存在,提示用户已经存在,上传达室图片失败,然后操作mysql写入图片文件数据。
图片上传成功后,程序自动重定向到display_image.php程序,显示刚才输入的用户名和上传达室图片, display_image.php程序代码如下:
上传图片成功!";
echo "下面是你的上传的图片:";
// 上传资料
$sql="select * from image where id='$id'";
$re=mysql_query($sql,$conn);
$result=mysql_fetch_array($re);
?>
用户名:
""){
$image=mysql_result($re,0,"photo");
echo " ";
echo "照片:";
echo "";
//echo "";
echo "";
echo "";
echo "";
}
?>
其中在显示图片时,用到了一个子程序,show.php该子程序show.php的代码如下:
这样就可以显示保存在mysql数据库的图片文件。
第二种方法:
在mysql中只保存上传的图片文件名的程序为save_image2.php.上传界面的程序还是前面的image_upload.html,只是需要将其中的form表单动作指向为程序save_image2.php即将该语句改为:
保存图片文件名的程序save_image2.php的代码如下:
// 判断该用户名是否已经存在
$checksql="select * from image where id='$id'";
$check_re=mysql_query($checksql,$conn);
$num=mysql_num_rows($check_re);
if($num!=0){
echo "";
echo "该用户名已经存在,请选择另一个
";
echo "上传失败!
返回";
echo "";
exit();
}
// 方法二:只保存文件名,
// 保存文件名时,文件在php.ini配置文件中设置的upload临时目录中,也就是upload_tmp_dir 参数中
if ($photo""){
if (($photo_type== "image/pjpeg")OR($photo_type == "image/gif")){
// C:\WINNT\Temp 使PHP.ini配置文件中设置的upload文件的临时目录
$photodir="C:\WINNT\Temp/";
if(!(file_exists($photo_name))){
// 拷贝该图片文件到设定的上传文件临时目录中
copy($photo,$photodir.$photo_name);
}
}
else{
echo "alert('上传照片只能是JPG或者GIF!');history.go(-1)
";
echo "或者
";
echo "文件名已经存在,请为图片改一个文件名";
exit;
}
}
else{
$photo_name="";
}
$sql="insert into image (id, photo) values('$id', '$photo_name')";
mysql_query($sql,$conn) or die ("插入数据失败: ".mysql_error());
// 关闭连接
mysql_close($conn);
// 显示上传图片成功
// 重定向到注册成功页面
header("Location:display_image2.php?id=$id");
?>
此方法保存上传的图片时,在mysql中只保存该图片文件名,图片文件真正存放的位置是php 系统中设置的上传文件临时目录或这里重新指定目录, 这里设置的是“C:\winnt\temp"然后拷贝此图片文件到该目录,这一方法与前面的上传文本方法相似。
上传图片成功后,同要自动重定向到一个显示刚上传的图片的程序。此程序命名为display_image2.php其代码如下:
上传图片成功!";
echo "下面是你的上传的图片:";
// 上传资料
$sql="select * from image where id='$id'";
$re=mysql_query($sql,$conn);
$result=mysql_fetch_array($re);
?>
用户名:
""){
$photodir="C:\WINNT\Temp/".$result[photo];
echo " ";
echo "照片:";
echo "";
echo "";
echo "";
echo "";
}
?>
至此,上传图片的两种处理方法就介绍完了,如何显示用这两种方法上传图生也顺带介绍了,用户要以根据情况选择一个方法处理。
保存上传图片有两种方法。一种是在mysql数据库中保存图片文件,另一种是在mysql中只保存文件名,而图片文件保存在php.ini配置文件中设置的upload临时目录,也就是upload_tmp_dir参数中。
一、为了用mysql保存图片文件,我们需要建立一个数据表用来保存数据。下面在数据库(test)建立名为image的数据表,该表只有两个字段,一个字段为用户名,一个用来保存图片,建立image表的SQL句如下:
use test;
create table image(
id varchar(20) not null,
photo longlob,
primary key (id)
);
Notice: photo用来保存图片文件,因此需要定义为longblob型数据。
此外,我们还需要建立一个简单的网页界面,用来上传图片。
下面为上传图片的代码:
上传图片范例
username
the pthoto:
二、在mysql中保存文件的方法
在mysql中保存图片文件的程序命名为save_image.php 代码如下:
$conn=mysql_connect("localhost","dbuser","dbpwd");
mysql_db_select("test",$conn);
?>
$id=$_POST['id'];
$check_sql="select * from image where id = 'id'";
$check_re=mysql_query($check_sql);
$num=mysql_num_rows($check_re);
if($num!=0){
echo "";
echo "该用户名已经存在,请选择另一个
";
echo "上传失败!
返回";
echo "";
exit();
}
// 方法一:在mysql中保存图片文件,
// 如果有图片文件,打开图片文件,将图片文件中的数据用函数
// addslashes处理,然后传递给变量$data,
// addslashes函数是给字符串加入斜线,使字符串能够顺利写入数据库中
// 这样变量$data 中保存的就是图片文件的数据了
if ($photo""){
$fp=fopen($photo,"r");
$data=addslashes(fread($fp,filesize($photo)));
}
$password=md5($password);
$sql="insert into image (id,photo) values('$id','$data')";
mysql_query($sql,$conn) or die ("插入数据失败: ".mysql_error());
// 关闭连接
mysql_close($conn);
// 显示上传图片成功
// 重定向到注册成功页面
header("Location:display_image1.php?id=$id");
本程序需要连接mysql数据库,然后判断用户输入的用户是否在数据库中已经存在,如果存在,提示用户已经存在,上传达室图片失败,然后操作mysql写入图片文件数据。
图片上传成功后,程序自动重定向到display_image.php程序,显示刚才输入的用户名和上传达室图片, display_image.php程序代码如下:
上传图片成功!";
echo "下面是你的上传的图片:";
// 上传资料
$sql="select * from image where id='$id'";
$re=mysql_query($sql,$conn);
$result=mysql_fetch_array($re);
?>
用户名:
""){
$image=mysql_result($re,0,"photo");
echo " ";
echo "照片:";
echo "";
//echo "";
echo "";
echo "";
echo "";
}
?>
其中在显示图片时,用到了一个子程序,show.php该子程序show.php的代码如下:
这样就可以显示保存在mysql数据库的图片文件。
第二种方法:
在mysql中只保存上传的图片文件名的程序为save_image2.php.上传界面的程序还是前面的image_upload.html,只是需要将其中的form表单动作指向为程序save_image2.php即将该语句改为:
保存图片文件名的程序save_image2.php的代码如下:
// 判断该用户名是否已经存在
$checksql="select * from image where id='$id'";
$check_re=mysql_query($checksql,$conn);
$num=mysql_num_rows($check_re);
if($num!=0){
echo "";
echo "该用户名已经存在,请选择另一个
";
echo "上传失败!
返回";
echo "";
exit();
}
// 方法二:只保存文件名,
// 保存文件名时,文件在php.ini配置文件中设置的upload临时目录中,也就是upload_tmp_dir 参数中
if ($photo""){
if (($photo_type== "image/pjpeg")OR($photo_type == "image/gif")){
// C:\WINNT\Temp 使PHP.ini配置文件中设置的upload文件的临时目录
$photodir="C:\WINNT\Temp/";
if(!(file_exists($photo_name))){
// 拷贝该图片文件到设定的上传文件临时目录中
copy($photo,$photodir.$photo_name);
}
}
else{
echo "alert('上传照片只能是JPG或者GIF!');history.go(-1)
";
echo "或者
";
echo "文件名已经存在,请为图片改一个文件名";
exit;
}
}
else{
$photo_name="";
}
$sql="insert into image (id, photo) values('$id', '$photo_name')";
mysql_query($sql,$conn) or die ("插入数据失败: ".mysql_error());
// 关闭连接
mysql_close($conn);
// 显示上传图片成功
// 重定向到注册成功页面
header("Location:display_image2.php?id=$id");
?>
此方法保存上传的图片时,在mysql中只保存该图片文件名,图片文件真正存放的位置是php 系统中设置的上传文件临时目录或这里重新指定目录, 这里设置的是“C:\winnt\temp"然后拷贝此图片文件到该目录,这一方法与前面的上传文本方法相似。
上传图片成功后,同要自动重定向到一个显示刚上传的图片的程序。此程序命名为display_image2.php其代码如下:
上传图片成功!";
echo "下面是你的上传的图片:";
// 上传资料
$sql="select * from image where id='$id'";
$re=mysql_query($sql,$conn);
$result=mysql_fetch_array($re);
?>
用户名:
""){
$photodir="C:\WINNT\Temp/".$result[photo];
echo " ";
echo "照片:";
echo "";
echo "";
echo "";
echo "";
}
?>
至此,上传图片的两种处理方法就介绍完了,如何显示用这两种方法上传图生也顺带介绍了,用户要以根据情况选择一个方法处理。
相关阅读 更多 +