2011-06-02 61 views
1

我試圖從mySQL顯示一個blob圖像,而我越來越怪異的字符。奇怪的字符,而不是從mySQL顯示時的圖像

插入數據我用:

if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

    // Temporary file name stored on the server 
    $tmpName = $_FILES['image']['tmp_name']; 

    // Read the file 
    $fp  = fopen($tmpName, 'r'); 
    $data = fread($fp, filesize($tmpName)); 
    $data = addslashes($data); 
    fclose($fp); 

// Insert data into mysql 
$sql="INSERT INTO $tbl_name(image)VALUES('$data')"; 
$result=mysql_query($sql); 
} 

要進行顯示:

$tbl_name="table"; // Table name 
$sql="SELECT * FROM $tbl_name"; 
$result=mysql_query($sql); 

if (!$result) { 
echo "There is nothing"; 
} 

while($rows= mysql_fetch_assoc($result)){ 

//header('Content-type: image/jpg'); 
echo $rows['image']; 

?> 

我該如何解決呢? 預先感謝您。

回答

1

您需要發送的圖像頭,如:

header("Content-Type: image/png"); // or image/jpeg or image/gif 

請記住,只能說明你每次和別的一個圖像。

如果你想顯示在網頁上,您將需要多個圖像簡單地鏈接到他們:

<img src="getimage.php?id=1234" /> 
<img src="getimage.php?id=1235" /> 
<img src="getimage.php?id=1236" /> 

凡getimage.php包含將發送Content-Type頭並獲取數據BLOB的代碼來自MySQL。

+0

在頁面我打字的圖片:'
'而在此show_image.php: ?''得到沒有結果((我在做什麼錯誤? – Tamara 2011-06-07 22:28:16

+0

定義'沒有結果'。也許你需要發送一個圖像/ jpEg頭?你有任何(二進制)輸出,如果你刪除頭文件? – Halcyon 2011-06-08 16:08:08

3

首先,最好不要將圖像存儲在數據庫中。請將它們存儲在一個文件夾中。

其次,您將看到ASCII圖像的原始數據。

要回答你的問題,如果你必須將圖像存儲在數據庫中,請創建一個新的php文件。

header('content-type: image/png'); // Use a variable for the image type 
// Code here to select a single image from the database. 
// Echo the database value. 

調用具有

<img src="link_to_php_file.php" alt="" /> 
+0

+1關於將圖像存儲在數據庫中的註釋。無論如何,數據庫實際上只是一個榮耀的文件。 – Halcyon 2011-06-02 19:21:21