把圖片上傳到資料庫然後顯示一般的做法是專門寫一個php頁面,通過GET或POST方法獲取圖片的id、查詢資料庫、header函數輸出圖片型別、再echo圖片資料就可以了。
問題詳情:
php可以通過表單上傳檔案到資料庫的blob
欄位,然後輸出,其實更好的做法是把檔案儲存到伺服器,只在資料庫中記錄相關資訊就可以了,但是不是任何時候都能照自己的想法去做。這不,我只能上傳圖片到資料庫然後顯示在網頁,結果卻遇到了問題:圖片無法顯示。
把圖片上傳到資料庫然後顯示一般的做法是專門寫一個php頁面,通過GET
或POST
方法獲取圖片的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其它相關文章!