php实现上传图片保存到数据库的方法
http://www.jb51.net/article/61034.htm
作者:傲雪星楓 字體:[增加?減小] 類型:轉載 這篇文章主要介紹了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??
}??
?>
?
總結
以上是生活随笔為你收集整理的php实现上传图片保存到数据库的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Objective-C语法之字符串NSS
- 下一篇: C++ 动态创建按钮及 按钮的消息响应