php如何实现上传图片并保存到mysql数据库(BLOB类型)的方法和示例代码

分类:PHP_Python| 发布:llmaomi| 查看:689 | 发表时间:2015/7/7

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

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

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

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

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

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

代码如下:
1CREATE TABLE `photo` ( 
2   `id` int(10) unsigned NOT NULL auto_increment, 
3   `type` varchar(100) NOT NULL
4   `binarydata` mediumblob NOT NULL
5   PRIMARY KEY  (`id`) 
6 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

upload_image_todb.php:

代码如下:
01<?php 
02 // 连接数据库 
03 $conn=@mysql_connect("localhost","root",""or die(mysql_error()); 
04 @mysql_select_db('demo',$conn) or die(mysql_error()); 
05// 判断action 
06 $action = isset($_REQUEST['action'])? $_REQUEST['action'] : ''
07// 上传图片 
08 if($action=='add'){ 
09     $image = mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name'])); 
10     $type = $_FILES['photo']['type']; 
11     $sqlstr = "insert into photo(type,binarydata) values('".$type."','".$image."')"
12     @mysql_query($sqlstr) or die(mysql_error()); 
13     header('location:upload_image_todb.php'); 
14     exit(); 
15 // 显示图片 
16 }elseif($action=='show'){ 
17     $id = isset($_GET['id'])? intval($_GET['id']) : 0; 
18     $sqlstr = "select * from photo where id=$id"
19     $query = mysql_query($sqlstr) or die(mysql_error()); 
20     $thread = mysql_fetch_assoc($query); 
21     if($thread){ 
22         header('content-type:'.$thread['type']); 
23         echo $thread['binarydata']; 
24         exit(); 
25    
26 }else
27 // 显示图片列表及上传表单 
28 ?> 
29 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "TR/html4/loose.dtd"
30 <html> 
31  <head> 
32   <meta http-equiv="content-type" content="text/html; charset=utf-8"
33   <title> upload image to db demo </title> 
34  </head> 
35    
36  <body> 
37   <form name="form1" method="post" action="upload_image_todb.php" enctype="multipart/form-data"
38   <p>图片:<input type="file" name="photo"></p> 
39   <p><input type="hidden" name="action" value="add"><input type="submit" name="b1" value="提交"></p> 
40   </form> 
41    
42 <?php 
43     $sqlstr = "select * from photo order by id desc"
44     $query = mysql_query($sqlstr) or die(mysql_error()); 
45     $result = array(); 
46     while($thread=mysql_fetch_assoc($query)){ 
47         $result[] = $thread
48    
49     foreach($result as $val){ 
50         echo '<p><img src="upload_image_todb.php?action=show&id='.$val['id'].'&t='.time().'" width="150"></p>'
51    
52 ?> 
53 </body> 
54 </html> 
55 <?php 
56 
57 ?>

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

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

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/php-python/2057.html