php是采用二進制形式存儲圖片及讀取顯示的,首先通過代碼創(chuàng)建數(shù)據(jù)表,然后上傳圖片服務(wù)器再通過瀏覽器顯示,具體編程代碼舉例:
成都創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)鹽邊,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
1、首先需要創(chuàng)建數(shù)據(jù)表,具體代碼如下圖所示。
2、然后寫上傳圖片到服務(wù)器的頁面 upimage.html用來將圖片上傳數(shù)據(jù)庫,如下圖所示代碼。
3、處理圖片上傳的php upimage.php文件,如下圖所示圖片已儲存到數(shù)據(jù)庫。
4、顯示圖片的php getimage.php文件,為了看一下效果提前把ID寫入代碼。
5、預(yù)覽網(wǎng)站從數(shù)據(jù)庫中提取了圖片,并顯示到頁面上。
一般不會把圖片直接存儲在數(shù)據(jù)庫中,一般在數(shù)據(jù)庫中存儲圖片的文件路徑,然后通過相對路徑訪問圖片
比較普遍的方法是通過代碼實現(xiàn)。
1、源代碼:
// 把圖片上傳到數(shù)據(jù)庫
// 從數(shù)據(jù)庫中讀取圖片;
// 定義文件臨時目錄 是必要的
define('UPLOAD_PATH',dirname(__FILE__)."/uploads/");
if($_POST["submit"]){
if($_FILES['photo']['size']0 $_FILES['photo']['name'])
{
$photo_type=$_FILES['photo']['type'];
if(!($_FILES['photo']['type']=='image/gif' || $_FILES['photo']['type']=='image/pjpeg'))
{
echo ?"商品圖片只能為GIF或者JPGE格式。";
}else{
list($tmp,$file_ext) = explode("/",$_FILES['photo']['type']);
$photo_name = mt_rand()."_".time().".".$file_ext;
if(!move_uploaded_file($_FILES['photo']['tmp_name'], UPLOAD_PATH.$photo_name))
{
echo "商品圖片保存失敗。";
echo "a href=javascript:window.history.go(-1)返回/a";
exit(); // 下面的操作將不會進行;
}
}
}
$sql="INSERT INTO `photo`(id,data,type)VALUES('','$photo_name','$photo_type')";
$query=mysql_query($sql);
if($query){
echo "圖片插入成功";
}else{
echo "失敗的操作";
echo "a href=javascript:window.history.go(-1)返回/a";
exit();
}
$sql_show_pic="SELECT * FROM `photo` ";
$query_show_pic=mysql_query($sql_show_pic);
while($result_pic_show=mysql_fetch_array($query_show_pic)){
//header("Content-Type:" .$result_pic_show["type"]);//這個不用啦
//?uploads 必須寫的
echo "img src=uploads/".$result_pic_show['data']."br";
}
}
?
form action="" method="post" enctype="multipart/form-data"
p選擇上傳的圖片:/p
input type="file" name="photo" size="50" br/br
input type="submit" name="submit" value="上傳"/
/form
2、需要使用的數(shù)據(jù)類型:
(1)一般來講都是把圖片保存到服務(wù)器下,然后根據(jù)路徑讀出的,但是有時候出于安全及版權(quán)什么的考慮,會把圖片保存到mysql的數(shù)據(jù)庫中,然后再讀出來,這樣的圖片點擊右鍵屬性,是看不到圖片地址的。下面逍遙一生就介紹下如何用php把圖片存儲到mysql中及如何讀出。
(2)MySQL數(shù)據(jù)庫使用專門的字段來保存大容量的數(shù)據(jù),數(shù)據(jù)類型為BLOB。
MySQL數(shù)據(jù)庫為BLOB做出的定義如下:BLOB數(shù)據(jù)類型是一種大型的二進制對象,可以保存可變數(shù)量的數(shù)據(jù)。BLOB具有四種類型,分別是TINYBLOB,BLOB, MEDIUMBLOB 與LONGBLOB,區(qū)別在于各自所能夠保存的最大數(shù)據(jù)長度區(qū)別。
3、編寫上傳腳本?
接收上傳文件并將其存入到MySQL數(shù)據(jù)庫中。具體的腳本代碼如下,其中我們假定文件上傳域的名稱為Picture。
存儲的是相對路徑,可以到網(wǎng)站服務(wù)器上查看,應(yīng)該有upload文件夾,里面就是存儲的圖片,這樣寫的好處是節(jié)省了數(shù)據(jù)庫存儲空間,轉(zhuǎn)移的時候可以直接將整個服務(wù)器的圖片打包轉(zhuǎn)移。
訪問的時候,前面可以拼接域名和指定的路徑,這些后臺可以輕松獲取到,然后拼接上服務(wù)器的路徑,我們就可以直接在網(wǎng)頁上訪問到圖片了。
這是很常見的圖片數(shù)據(jù)庫保存方式,和直接把圖片的二進制存入數(shù)據(jù)庫,這樣的方式便于檢索,占用空間小。當然,目前主流都采用oss來單獨存儲文件了,就是有專門的文件服務(wù)器,這個時候,一般存儲的是完整的圖片路徑。
1.圖片轉(zhuǎn)換 將上傳的圖片讀取到一個字符串中,再用base64對數(shù)據(jù)進行編碼 $img =base64_encode(file_get_contents($_FILES['file_head']['tmp...
2.顯示圖片 imgsrc="{$base64String}" 這樣就能把圖片顯示出來了
兩種方法:
一:將圖片上傳至指定目錄,在數(shù)據(jù)庫中保存文件名和文件路徑。
二:將圖片文件讀入字符串,將字符串保存到數(shù)據(jù)庫,不推薦(沒那么長的字段長度支持)。