2011-06-02 33 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