php上傳圖片無法顯示的問題

2020-07-16 10:06:01

把圖片上傳到資料庫然後顯示一般的做法是專門寫一個php頁面,通過GET或POST方法獲取圖片的id、查詢資料庫、header函數輸出圖片型別、再echo圖片資料就可以了。

問題詳情:

php可以通過表單上傳檔案到資料庫的blob欄位,然後輸出,其實更好的做法是把檔案儲存到伺服器,只在資料庫中記錄相關資訊就可以了,但是不是任何時候都能照自己的想法去做。這不,我只能上傳圖片到資料庫然後顯示在網頁,結果卻遇到了問題:圖片無法顯示。

把圖片上傳到資料庫然後顯示一般的做法是專門寫一個php頁面,通過GETPOST方法獲取圖片的id、查詢資料庫、header函數輸出圖片型別、再echo圖片資料就可以了,這個方法是沒有問題的,可是我卻出了問題,圖片總是無法顯示。

在網上查詢了很多資料,試了很多方法,都不行,最後在stack overflow上看到一個回答,由於是英文就不原句參照了,內容是header這個函數有些特殊,要小心不要在header位置前有其他的header或別的什麼內容,結果就是這個問題,由於我寫了一個php檔案包含了一些通用函數,其中也有javascript的函數,我在輸出圖片的php檔案把require語句去掉就行了,圖片就能夠輸出了。

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="html/text;charset=utf-8"/>
</head>
<body>
<form action="#"  name="form" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="img" value="選擇上傳檔案"/>
</p>
<input type="submit" value="上傳"/>
</form>
</body>
</html>
<?php
date_default_timezone_set("PRC");         //設定時區
if(count($_FILES)>0){ 
$sort = array("image/jpeg","image/jpg","image/gif","image/pdg");
//判斷是否是圖片型別
if(in_array($_FILES['img']['type'],$sort)){ 
 $img = "img";    //獲取上傳到的資料夾位置
//判斷資料夾是否存在 ,如果不存在建立一個
if(!file_exists($img)){
   mkdir("$img",0700);        //0700最高許可權
}
$time=date("Y_m_d_H_i_s");     //獲取當前時間
$file_name = explode(".",$_FILES['img']['name']);         //$_FILES['img']['name'] 上傳檔案的名稱 explode字串打斷轉字串
$file_name[0]=$time; 
$name = implode(".",$file_name);    //implode 把陣列拼接成字串
$img_name = "img/".$name;
if(move_uploaded_file($_FILES['img']['tmp_name'],$img_name)){   //move_uploaded_file 移動檔案
   echo "<center><img style='width:1000px;' src='$img_name'>
   <p>
   <a href='img_uploading.php'>重新上傳</a></p></center>";
}else{
     echo "上傳失敗"; 
}
}else{ 
echo "不是圖片型別";
}
}
?>

不得不說程式設計有時候是件很讓人頭疼的事,僅僅因為一個語句,卻花了我一天時間去嘗試各種方法;可是程式設計又是件有意思的事,因為在解決了問題,程式成功執行的時刻,那種成就感、滿足感真的讓人難以忘懷。

更多學習教學:PHP 圖片上傳教學

以上就是php上傳圖片無法顯示的問題的詳細內容,更多請關注TW511.COM其它相關文章!