新聞中心
怎樣用php實現(xiàn)上傳圖片到數(shù)據(jù)庫
php實現(xiàn)上傳圖片保存到數(shù)據(jù)庫的方法。具體分析如下:
高昌ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
php 上傳圖片,一般都使用move_uploaded_file方法保存在服務器上。但如果一個網(wǎng)站有多臺服務器,就需要把圖片發(fā)布到所有的服務器上才能正常使用(使用圖片服務器的除外)
如果把圖片數(shù)據(jù)保存到數(shù)據(jù)庫中,多臺服務器間可以實現(xiàn)文件共享,節(jié)省空間。
首先圖片文件是二進制數(shù)據(jù),所以需要把二進制數(shù)據(jù)保存在mysql數(shù)據(jù)庫。
mysql數(shù)據(jù)庫提供了BLOB類型用于存儲大量數(shù)據(jù),BLOB是一個二進制對象,能容納不同大小的數(shù)據(jù)。
BLOB類型有以下四種,除存儲的最大信息量不同外,其他都是一樣的??筛鶕?jù)需要使用不同的類型。
TinyBlob?????? 最大 255B
Blob????????????? 最大 65K
MediumBlob? 最大 16M
LongBlob????? 最大 4G
數(shù)據(jù)表photo,用于保存圖片數(shù)據(jù),結構如下:
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??
//?連接數(shù)據(jù)庫??
$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"?""??
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??
pinput?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?'pimg?
src="upload_image_todb.php?action=showid='.$val['id'].'t='.time().'"
width="150"/p';??
}??
???
/body??
/html??
?php??
}??
?
程序運行截圖和數(shù)據(jù)庫截圖:
php上傳文件同時將文件名及后綴寫數(shù)據(jù)庫
//?獲取文件名
$filename=$_FILES["fileToUpload"]["name"].'.'$_FILES["fileToUpload"]["tmp_name"];
$mysqli?=?new??mysqli($dbhost,$dbuser,$dbpwd,$dbname);
if?(mysqli_connect_errno()){?//注意mysqli_connect_error()新特性
die('Unable?to?connect!').?mysqli_connect_error();
}
$sql?=?"SET?NAMES?".$charName;
$mysqli-query($sql);
$sql="?insert?into?tbname?(filenane)??values?('".$filename."')";
$mysqli-query($sql);?//插入新紀錄
請幫忙解決PHP上傳多圖片,并在數(shù)據(jù)庫寫入文件路徑的問題,謝謝!
把你圖片上傳那中間的一段代碼改成這個:
//圖片上傳
$files_arr?=?[];
foreach($_FILES['pictures']['error']?as?$key?=?$error)?{
if($error?==?UPLOAD_ERR_OK)?{
$tmp_name?=?$_FILES['pictures']['tmp_name'][$key];
$name?=?date('Ymd').rand(1000,?9999).$_FILES['pictures']['name'][$key];
$dir?=?'upload/';
$filenameurl?=?$dir.$name;
$files_arr[]?=?$filenameurl;
move_uploaded_file($tmp_name,?$filenameurl);
}
}
$filenameurl?=?join(',',?$files_arr);
php 文件和表單內(nèi)容一起上傳到數(shù)據(jù)庫
?php
$filename = $_POST['filename'];
$explain = $_POST['explain'];
$upfile = $_FILES['upfile'];
if(is_uploaded_file($upfile['tmp_name']) $upfile['size']0){
$filepath = './'.$upfile['name'];
move_uploaded_file($upfile['tmp_name'],$filepath);
$res = mysql_query("INSERT INTO 表(filename,explain,filepath) VALUES('$filename','$explain','$filepath')");
if($res){
echo '添加成功!';
exit();
}
}
?
form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"
p
input type="text" name="filename" id="filename" /
/p
p
input type="text" name="explain" id="explain" /
/p
p
input type="file" name="upfile" id="upfile" /
/p
p
input type="submit" name="button" id="button" value="提交" /
/p
/form
PHP 上傳多張圖片后存儲地址到MYSQL數(shù)據(jù)庫怎么做
1.新建一個表存儲;
2.也可以新建一個字段存儲;
如果一個圖片,選擇2;
多張圖片,選擇1
新手請教多個圖片上傳,怎么寫入數(shù)據(jù)庫(PHP)
原理都一樣,循環(huán)接參,你打印一下它的參數(shù)就夠就明白了,存儲數(shù)據(jù)庫,可以將圖片路徑之間用|或者逗號,或者json 系列化來存儲:
?php
print_r($_FILES);//你可以打印一下它,看看它的結構
if(!empty($_FILES)){
foreach($_FILES['file']['name']?as?$k=$v){
?//$_FILES["file"]都變成$_FILES["file"][$k]操作進行操作吧
?if?($_FILES['file'][$k]['error']?==?0)?{
$filetype?=?array("jpg","JPG");
$arr?=?explode(".",?$_FILES["file"][$k]["name"]);
...//同樣的代碼
?}
}
}
?
form?name=""?action=""?method="post"?enctype="multipart/form-data"
input?type="file"?name="file[]"?/br?/
input?type="file"?name="file[]"?/br?/
input?type="file"?name="file[]"?/br?/
input?type="file"?name="file[]"?/br?/
input?type="file"?name="file[]"?/br?/
input?type="file"?name="file[]"?/br?/
input?type="submit"?name="a"?value="提交"?/
/form
分享標題:php上傳多文件數(shù)據(jù)庫 php多文件下載
網(wǎng)站鏈接:http://www.dlmjj.cn/article/hehhhe.html