php实现上传图片保存到数据库的方法

前端技术 2023/09/09 PHP

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 

?>

本文地址:https://www.stayed.cn/item/23464

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。