利用php怎么将上传的图片保存到数据库中

发布时间:2021-01-16 11:27:42 作者:Leah
来源:亿速云 阅读:374

今天就跟大家聊聊有关利用php怎么将上传的图片保存到数据库中,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

php 上传图片,一般都使用move_uploaded_file方法保存在服务器上。但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外)

如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间。

首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库。
mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据。

BLOB类型有以下四种,除存储的最大信息量不同外,其他都是一样的。可根据需要使用不同的类型。

TinyBlob       最大 255B
Blob              最大 65K
MediumBlob  最大 16M
LongBlob      最大 4G

数据表photo,用于保存图片数据,结构如下:

复制代码 代码如下:

CREATE TABLE `photo` ( 
  `id` int(10) unsigned NOT NULL auto_increment, 
  `type` varchar(100) NOT NULL, 
  `binarydata` mediumblob NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

upload_image_todb.php:

复制代码 代码如下:

<?php 
// 连接数据库 
$conn=@mysql_connect("localhost","root","")  or die(mysql_error()); 
@mysql_select_db('demo',$conn) or die(mysql_error()); 

// 判断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 

?>

看完上述内容,你们对利用php怎么将上传的图片保存到数据库中有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. Android中怎么利用imageview将图片保存到本地
  2. 利用ssm框架如何实现将上传的图片保存到本地数据库中

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php 数据库

上一篇:使用php怎么给一张图片的局部打马赛克

下一篇:怎么在php中相加两个数组

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》