[PHP,MySQL]圖片上傳和讀取 使用base64_encode & base64_decode
2017/08/10更新 classicBookShareUpLoad.php 刪除一些沆碼
2017/08/10更新 更新後第二段SQL與第三段SQL會對不上,請自行修改
此篇主要是做紀錄用然後稍作一些修改,主要參考自:
http://www.webtech.tw/info.php?tid=24
http://forum.twbts.com/thread-3299-1-1.html
http://stackoverflow.com/questions/16262098/displaying-a-base64-images-from-a-database-via-php
摘要:
base64_encode主要是使上傳結果正確
$_FILES["file"]["type"]的紀錄是為了讓讀圖的時候能有正確的解碼方式(即資料庫除了存圖片的空間外還要另外設置一個欄位儲存file type)
資料庫設置:
圖片存放空間:mediumblob
圖片型態存放空間:varchar(50)
上傳頁面:
classicBookShareUpLoad.php:
※補充
$_FILES["file"]["name"]:上傳檔案的原始名稱。
$_FILES["file"]["type"]:上傳的檔案類型。
$_FILES["file"]["size"]:上傳的檔案原始大小。
$_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。
$_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。
從資料庫讀出圖片:
2017/08/10更新 更新後第二段SQL與第三段SQL會對不上,請自行修改
此篇主要是做紀錄用然後稍作一些修改,主要參考自:
http://www.webtech.tw/info.php?tid=24
http://forum.twbts.com/thread-3299-1-1.html
http://stackoverflow.com/questions/16262098/displaying-a-base64-images-from-a-database-via-php
摘要:
base64_encode主要是使上傳結果正確
$_FILES["file"]["type"]的紀錄是為了讓讀圖的時候能有正確的解碼方式(即資料庫除了存圖片的空間外還要另外設置一個欄位儲存file type)
資料庫設置:
圖片存放空間:mediumblob
圖片型態存放空間:varchar(50)
上傳頁面:
<html> <body> <Form Action="classicBookShareUpLoad.php" Method="POST" Enctype="multipart/form-data"> <Input Type="File" Name="upfile" ><br> <Input Type="Submit" value=" 開始上傳 "> </Form> </body> </html>
classicBookShareUpLoad.php:
<?php include("loginStaCheck.php");?> <?php //開啟圖片檔 $file = fopen($_FILES["upfile"]["tmp_name"], "rb"); // 讀入圖片檔資料 $fileContents = fread($file, filesize($_FILES["upfile"]["tmp_name"])); //關閉圖片檔 fclose($file); //讀取出來的圖片資料必須使用base64_encode()函數加以編碼:圖片檔案資料編碼 $fileContents = base64_encode($fileContents); //連結MySQL Server require("./php/dbCon.php"); //組合查詢字串 $imgType=$_FILES["upfile"]["type"]; $sql="INSERT INTO speechPost (img,imgType) VALUES ('$fileContents','$imgType')"; // if($conn->query($sql) === TRUE) { echo "成功"; } else { //echo "Error: " . $sql . "<br>" . $conn->error; echo "失敗"; } $conn->close(); ?>
$_FILES["file"]["name"]:上傳檔案的原始名稱。
$_FILES["file"]["type"]:上傳的檔案類型。
$_FILES["file"]["size"]:上傳的檔案原始大小。
$_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。
$_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。
從資料庫讀出圖片:
<?php include("./php/dbCon.php"); $sql="SELECT * FROM classicBookShare WHERE count=12"; $result = $conn->query($sql); $conn->close(); //查詢結果 if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $img=$row["bookImage"]; $logodata = $img; echo '<img src="data:'.$row['imgType'].';base64,' . $logodata . '" />'; } } else{ } echo $img; ?>
留言
張貼留言