2010-01-06 207 views
1

我已經繼承了一個使用理想方式處理圖像的網站,它們已經作爲BLOB存儲在數據庫中。圖像標籤由BLOB數據作爲圖像標籤的src屬性?

<img src='image.php?id=22' /> 

但沒有圖像顯示。當我訪問image.php?id = 22頁面時,BLOB數據剛剛被轉移到屏幕上(所有有趣的字符),並且沒有顯示圖像。我不確定這是否與發送到瀏覽器的數據的內容類型有關?我被告知「這個過去幾個星期前工作得很好」。

我的問題是,它甚至有可能作爲一個圖像標記的src屬性中顯示BLOB數據?

編輯:根據要求,這裏有image.php的內容。希望這有些用處。

<? 
error_reporting(0); 
include("../inc/connect.inc"); 
include("../inc/common.inc"); 
include("item.class"); 
$item = new Item($id); 
echo $item->Picture; 
?> 

EDIT2:如果我添加的內容型線,頁面只是打印出的圖像的路徑:http://www.site.com/dir/image.php?id=49。試過幾種內容類型,沒有區別。奇怪!

+0

我不認爲這種圖像存儲方法有什麼問題。 – recursive 2010-01-06 16:58:52

回答

3

除非BLOB數據是一個固定類型(例如,image/png),您應該在數據庫中擁有內容類型字段以及BLOB數據,您可以在其中對image.php腳本進行硬編碼。您需要在Content-type:set中包含一個新的標題。

header('Content-type: image/png'); 

但是你必須找出圖像類型是什麼 - 試錯將做我猜,它得是圖像/ JPEG,圖像/ PNG或圖像/ GIF肯定的呢?

1

好吧,如果你直接鏈接到完全相同的數據將被髮回的圖像,有一個「斑點」,只是數據由網絡服務器讀取和發送到瀏覽器之間沒有區別。

所以,你在正確的軌道上的內容類型理念上......這是什麼螢火說內容類型是什麼?您可能需要發佈image.php的代碼。

編輯:

就這樣,我們去...只要修改腳本的樣子:

<? 
header('Content-Type: image/png'); 
error_reporting(0); 
include("../inc/connect.inc"); 
include("../inc/common.inc"); 
include("item.class"); 
$item = new Item($id); 
echo $item->Picture; 
?> 

與任何格式的圖像更換image/png

+0

Firebug表示內容類型爲Content-Type \t text/html,因此必須是該問題。我認爲需要通過.htaccess進行某種修改? – stef 2010-01-06 15:02:19

+0

不應該發佈你的'image.php'。 – rfunduk 2010-01-06 16:42:32

+0

完成,請參閱上文。 – stef 2010-01-06 16:52:01