显示数据库中的图像

时间:2013-08-11 08:31:16

标签: php

我已经查看过这个主题的大多数主题,但我仍处于黑暗中!我知道将图像存储在数据库中并不是最佳实践,但这就是我所拥有的。我设法上传图像没有问题,但当我尝试显示它们时,我收到了这条消息。

无法显示图片 * ,因为它包含错误。

我已经测试了代码,看看是否通过回显文件内容实际选择了文件,我得到了与图像相关的代码页,但是当我尝试使用标题显示图像时(内容类型:图像/ jpeg)我收到上面的消息。我将图像存储为longblob。这是我的代码

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "test";

mysql_connect($host, $username, $password)
    or die("Can not connect to database:   ".mysql_error());

mysql_select_db($database) or die("Can not select the database: ".mysql_error());

$id = 3;

if (!isset($id) || empty($id) || !is_int($id)) {
    die("Please select your image!");
} else {
    $query = mysql_query("SELECT image FROM images WHERE image_id='".$id."'")
        or die(mysql_error());
    //echo $query;
    $row = mysql_fetch_row($query);
    $content = $row['image'];

    header('Content-type: image/jpg');
    echo $content;
}    

任何帮助非常感谢 谢谢# 萨里塔

2 个答案:

答案 0 :(得分:1)

  1. <?php丢失了。这导致您的代码不被解释为PHP,而是发送给未经处理的客户端。
  2. 删除?>。它可能导致你没有打算的额外输出。您想要的额外输出在文本文件中可能是可接受的,但可以使二进制文件的解析器跳闸。
  3. 使用文本编辑器打开无法显示的图像,因为它包含错误以查看其他错误。

答案 1 :(得分:0)

mime类型应为image/jpeg而不是image/jpg

确保<?php之前没有任何内容,最后?>之后没有任何内容,包括unicode BOM(某些编辑可能无法显示)。

如果启用了gpc_magic_quotes,您可能已将图像存储在数据库中,并在其中包含其他反斜杠。确保数据库中的图像格式正确。