php实现上传图片保存到数据库的方法。分享给大家供大家参考。具体分析如下:
php 上传图片,一般都使用move_uploaded_file方法保存在服务器上。但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外)
如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间。
首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库。
mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据。
BLOB类型有以下四种,除存储的最大信息量不同外,其他都是一样的。可根据需要使用不同的类型。
TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
数据表photo,用于保存图片数据,结构如下:
upload_image_todb.php:
// 判断action
$action = isset($_REQUEST[\'action\'])? $_REQUEST[\'action\'] : \'\';
// 上传图片
if($action==\'add\'){
$image = mysql_escape_string(file_get_contents($_FILES[\'photo\'][\'tmp_name\']));
$type = $_FILES[\'photo\'][\'type\'];
$sqlstr = \"insert into photo(type,binarydata) values(\'\".$type.\"\',\'\".$image.\"\')\";
@mysql_query($sqlstr) or die(mysql_error());
header(\'location:upload_image_todb.php\');
exit();
// 显示图片
}elseif($action==\'show\'){
$id = isset($_GET[\'id\'])? intval($_GET[\'id\']) : 0;
$sqlstr = \"select * from photo where id=$id\";
$query = mysql_query($sqlstr) or die(mysql_error());
$thread = mysql_fetch_assoc($query);
if($thread){
header(\'content-type:\'.$thread[\'type\']);
echo $thread[\'binarydata\'];
exit();
}
}else{
// 显示图片列表及上传表单
?>
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
<title> upload image to db demo </title>
</head>
<body>
<form name=\"form1\" method=\"post\" action=\"upload_image_todb.php\" enctype=\"multipart/form-data\">
<p>图片:<input type=\"file\" name=\"photo\"></p>
<p><input type=\"hidden\" name=\"action\" value=\"add\"><input type=\"submit\" name=\"b1\" value=\"提交\"></p>
</form>
<?php
$sqlstr = \"select * from photo order by id desc\";
$query = mysql_query($sqlstr) or die(mysql_error());
$result = array();
while($thread=mysql_fetch_assoc($query)){
$result[] = $thread;
}
foreach($result as $val){
echo \'<p><img src=\"upload_image_todb.php?action=show&id=\'.$val[\'id\'].\'&t=\'.time().\'\" width=\"150\"></p>\';
}
?>
</body>
</html>
<?php
}
?>
本文地址:https://www.stayed.cn/item/23464
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我