2016-02-23 231 views
1

我是一位有6個月經驗的新手,通過StackEx/books/etc進行自學。創建一個相當不錯的網站登錄/註冊並通過mySQL存儲一些信息。我在這裏經歷過每一個BLOB職位,並且我有一些體面的輸出。如何使用PHP和MySQL在Base64中讀取blob?

我覺得我和大多數新手一樣,知道自己已經足夠危險了,沒有最好的基礎,所以當認真理解內建函數,數組和傳遞參數時,我們可能會失去流動性,我基本上認爲我通過使用includes調用一些導航欄來挖出一個洞,這樣我就不能只使用一個頭來輸出該死的圖像,因爲我在登錄後回顯用戶名,所以它已經輸出了行,它將是一個怪物撤銷。三個級別的導航,未經身份驗證,驗證和管理。

數據庫連接和寫入/讀取是OK。我可以存儲BLOB,我甚至可以讀取它並將該數組存儲在變量中,然後調試查看二進制文件,但無法將其顯示在HTML頁面上。

這裏是有趣:

$stmt = $dbc2->query("SELECT * FROM equip1"); 

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
{ 
$name = $row['equipname1']; 
$desc = $row['equipdesc1']; 
$img = $row['equipimg1']; 
} 

<div class="col-lg-12"> 
    <h1><?php echo $name ?></h1> 
    <p><?php echo $desc ?></p> 
    <pre> 
     <?php print_r($img); ?> 
    </pre> 
    <?php echo "<img src='data:image/jpeg;base64," . base64_encode($img) . "' />"; ?> 
</div> 

$ DBC2連接 equip1表是兩個簡單的VARCHAR的cols,一個BLOB山坳。 $ name和$ desc echo out ok,$ img顯示斷開的鏈接。 我通過預編碼檢查數組,並且匹配,按上傳過程中以dB爲單位存儲的內容。 從我已閱讀和經歷,似乎你不能在同一時間這樣做,除非通過數據的URI,我已經做了,但仍然斷開鏈接。根本沒有任何意義。我嘗試頭,當然輸出已經開始,但我可以看到也輸出二進制。

這裏是URI方法的截圖:

binary

由於這兩種方法「似乎」讓進出分貝,但不顯示我轉圈圈。請幫助我在html頁面上顯示圖像。我想在任何地方迴應它,然後我可以在此之後對頁面進行樣式設置。謝謝!

+0

我真的已經在這個6-8小時**呻吟**,我保證我會更努力地學習,並且向那些得到答案的你們祈禱PHP神。 :) –

回答

2

嘗試像這樣

<?php echo '<img src="data:image/png;base64,'.base64_encode($img).'">';?> 
+0

沒有變化。它也是一個jpeg。感謝您的回答! :) –

+0

@KevinMorris沒有看到單引號和雙引號的地方你檢查過這個嗎? – Pranavadurai

+0

是的Pranavadurai!但你幫了!你重新啓動了我的大腦,所以我注意到我是雙重編碼。我在存儲它時編碼了base64。謝謝!!!! :) –

0

呃沒關係。從來沒有想過讀某人的答案會使「fresheyes」。我注意到我是編碼的,但是當我存儲它時,我已經編碼了它。 Mea culpa。 DOH! :)

+0

我正要說,你已呈現的輸出數據看起來不像一個JPEG標頭! ':-)' – halfer

+0

好吧...比我想象的更多。注意到編輯,謝謝。除了我已經繞着彎道回到可以說話和一些帥哥傾向於認爲你只是懶惰的時候,你會添加所有那些絨毛。哇,我可以再次呼吸......很酷! –

+0

也感謝@Pranavadurai!不知道如果我是明確的。 –