只是爲了記錄,這是用Wordpress完成(我沒有選擇它,也沒有將圖像存儲在數據庫中)。破解圖像檢索BLOB與PHP
基本上我試圖存儲和使用PHP數據庫中的圖像,稍後顯示它,但我得到一個破碎的圖像圖標。 (相信我,我一直在研究這一點,我無法找到問題所在)。
這是我的店面形象:
HTML:
<input type="file" name="img" id="media">
PHP:
$item['media'] = addslashes (file_get_contents($_FILES['img']['tmp_name']));
$result = $wpdb->insert($table_name, $item);
這是IM如何試圖找回它:
HTML:
<img src="Image_View.php?image_id=<?php echo $item["item_id"]; ?>"/>
Image_View.PHP:
<?php
global $wpdb;
$result = $wpdb->get_row("SELECT media FROM $wpdb->item WHERE item_id = 3", ARRAY_A);
header("content-type: image/png");
echo $result["media"];
?>
BTW!這是我在Stackoverflow的第一個問題!所以大家好!
編輯1:
正如hanshenrik提到,$ wpdb->插件逃脫輸入,所以我上載,然後像上面寫磁盤,設置適當的exntension和BOOM你去那裏,現在我知道我其實上傳圖像的正確方法,但它看起來像IM仍然在遇到問題時試圖證明它,使用Chrome的開發者工具,即時得到這個時候:
GET http://127.0.0.1/pymes/wp-admin/Image_View.php 500(內部服務器錯誤)
那麼,Image_View.php有問題嗎?該查詢實際上是好的,並且正在檢索數據,因爲我在另一個位置複製並粘貼了該代碼,並且它在bin文件內部響應了整個lote字符。
編輯2:
一次!對此深感抱歉,我一直在努力
因此,解決上傳圖片時出現問題的解決方法已在編輯1中解釋(感謝hanshenrik提示wpdb插入正在轉義輸入)。
至於顯示,我是有接頭的煩惱圖像發送之前它可能使它到:
header("content-type: image/png");
,所以我在這個掙扎,我決定使用URI的形象,這解決了嘗試我的問題。對我而言,這更像是一種解決方法,而不是一種實際的解決方法,但它讓我的船浮上水面。我實現URI的方式如下:
<?php
global $wpdb;
$result = $wpdb->get_row("SELECT media FROM $wpdb->item WHERE item_id = $_GET[id]", ARRAY_A);
echo '<img src="data:image/png;base64,'.base64_encode($result['media']).'" height="100" width="100"/>';
?>
通過這樣做,我不再需要Image_View.php文件。
真的很感謝這裏提供的幫助,TY們!
嗨回來!我認爲最有可能的是圖像已被'addslashes(file_get_contents($ _ FILES ['img'] ['tmp_name']));'當你存儲它 – RiggsFolly
我想我可能已經轉換圖像到'base64',然後存儲,如果我不得不在MYSQL數據庫上存儲圖像。 [見此](http://stackoverflow.com/questions/3967515/how-to-convert-image-to-base64-encoding) – RiggsFolly
簡單測試,從數據庫中讀取blob,用正確的extn寫入磁盤。如果你無法用圖像查看器打開它,那麼它就會被商店的進程擱置。 – RiggsFolly