2010-11-03 16 views
3

我想顯示一個圖像,而不是下載它。我想顯示一個圖像,而不是下載它(數據庫blob中的圖像)

我有我的數據庫表中的圖像列作爲BLOB。

此代碼段下載圖像,但我想代替顯示它:

$query = "SELECT * FROM upload"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 
$content = $row['content']; 
$size = $row['size']; 
$type = $row['type']; 
header("Content-length: $size"); 
header("Content-type: $type"); 

// The following headers make the image download, but I don't want it to 
// download, I want to show the image. What should I do? 
// header("Content-Disposition: attachment; filename=$name"); 

echo $content; 
+1

您的代碼應該按原樣運行,因爲您已經註釋掉了「Content-Disposition」行。真正重要的是「Content-Type」標題。你應該確保它包含像「image/jpeg」這樣的瀏覽器知道它是一個圖像。 – kijin 2010-11-03 16:57:04

+0

您是否清除瀏覽器緩存?隨時都伴隨着我。 – kijin 2010-11-03 17:08:04

回答

0

:試試這個

<img src="image.php?imageid=$myImageID" /> 

和你的腳本是:

$myImageID = $_GET["myImageID"]; 
$query = "SELECT * FROM upload where id='"+$myImageID+"'"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 
$content = $row['content']; 
$size = $row['size']; 
$type = $row['type']; 
header("Content-length: $size"); 
header("Content-type: $type"); 
//header("Content-Disposition: attachment; filename=$name");---> this headers make system to download , but i dont want to download, i want to show image, what should i do , 
echo $content; ?>" 
+0

上面的代碼片段現在工作,而不是顯示圖像,它只是顯示像http://localhost/source/iq/upload-file-mysql.php – Bharanikumar 2010-11-03 17:31:48

+0

的路徑,如果你的php代碼不正確,你的圖像不會顯示,如果你訪問讓我們說image.php?imageId = $ myImageID在瀏覽器中,你應該看到你的圖像 – CristiC 2010-11-03 17:53:58

+0

這段代碼是非常危險的!你不知道永遠不要相信用戶輸入嗎?這是獲得SQL注入的一個肯定方法! – vasilevich 2016-10-24 14:14:31

1

attachment相反內容處置是inline。如果你想用這個更加動態地使你原來的代碼編寫的腳本,並調用它

header("Content-Disposition: inline; filename=$name"); 
0

您需要確保沒有任何東西比您的標題和圖像內容發送到客戶端。也許你想在echo $ content之後做一個退出;這不是最佳做法,也不能確保在輸出圖像內容之前沒有發送任何內容,但它應該完成這項工作。

相關問題