2017-01-04 47 views
2

即時通訊一個完整的新手,當涉及到PHP所以事先道歉。PHP輸出圖像,而不是字符串

我想查詢我的表並返回表中的所有數據,我只有下面的工作,它只返回最後一列作爲longtext字符串,我想用它作爲圖像源,所以它返回一張圖片,這有道理嗎?

try { 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$stmt = $conn->prepare("SELECT * FROM `o18-reg`"); 
$stmt->execute(); 

$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
    echo $v; 
} 
} 
+0

不要'將文件保存到數據庫中。 http://stackoverflow.com/a/41235395/267540 – e4c5

+0

字符串是什麼?該圖像爲base64?文件的路徑? – KhorneHoly

+0

其基數64 @KhorneHoly是 – Liam

回答

4

首先,我想建議你不要把圖像本身放到數據庫中。您最好將文件系統中的圖像URL或絕對路徑保存到數據庫表中。

同時請確保您設置正確header信息時echo圖像數據。 沒有右header,將在客戶端結束打印爲字符串。

因此,如果圖像是JPEG,您可以使用echo之前打印像下面的圖像添加標題代碼:(也不要忘記做base64_decode如果你有編碼使用base64圖像數據)

header("Content-type: image/jpeg"); 
echo base64_decode($my_image); 

如果是PNG,那麼你可以使用以下內容:

header("Content-type: image/png"); 
echo base64_decode($my_image); 
+3

注:由於該字符串是BASE64,你需要使用'BASE64_DECODE()'轉向以base64回圖像 – KhorneHoly

+0

@KhorneHoly好點。我編輯了我的答案。 – Codemole

相關問題