PHP - 存储为 BLOB 的图像显示为断开的链接

标签 php mysql image blob

我正在使用 PHP 开发商店应用程序,但在显示存储在 MySQL 数据库中时遇到问题。我将图像存储为中型 BLOB 类型,并且我确信图像在上传到数据库期间和之后的格式正确。 (我可以直接从数据库下载图片并以jpeg图片查看)。

但是如果我尝试在网页中显示我的图像,我会看到损坏的图像图标。我能够从 sql 中显示图片的唯一方法是使用 base64 编码,但这不是我想要使用的方法。

这是我的代码。它从数据库中获取所有产品,并在表格行中显示它们的 ID、描述和图像。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<title>Image Test</title>
<body>
<?php
    include("mylibrary/login.php");
    login();
    $query = "SELECT prodid, description FROM products";
    $result = mysql_query($query) or die(mysql_error());

    echo "<table width=\"50%\" cellpadding=\"1\" border=\"1\">\n";
    echo "<tr><td>Product ID</td><td>Description</td><td>Image</td></tr>\n";
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        $prodid = $row['prodid'];
        $description = $row['description'];

        echo "<tr><td>$prodid</td><td>$description</td>\n";  
        echo "<td><img src=\"showimage.php?id=$prodid\" width=\"80\" height=\"60\"></td></tr>\n";
    }
    echo "</table>\n";
?>
</body>
</html>

这是 showimage.php 代码。 showimage.php 文件只显示损坏的图像。我查看了图像的原始数据,它们的格式都正确。 :

<?php
//header('Content-Type: image/jpeg');
   $prodid = $_GET['id'];
   $con = mysql_connect("localhost", "test", "test") or die('');
   mysql_select_db("store", $con);

   $query = "SELECT picture from products WHERE prodid=$prodid";
   $result = mysql_query($query);
   $row = mysql_fetch_array($result, MYSQL_ASSOC);
   $picture = $row['picture'];

   header("Content-type: image/jpeg");
   echo $picture;
?>

如果您能帮助我理解为什么这段代码不起作用,我将不胜感激。我已经阅读了本网站和谷歌搜索的大量文章,他们都说这段代码应该有效。

作为旁注,我不想使用 base64 编码方法,因为我正在上课,这是我们正在使用的方法(我也是唯一遇到此问题的人) .

最佳答案

一般来说,代码看起来差不多没问题。图片的问题是,它必须完全正确,否则无法正确显示。尝试以下操作:

  • 使用“Content-Type:image/jpeg”代替“Content-type:image/jpeg”
  • 删除 showimage.php 中的结束标记 ?> - 如果结束标记后有空格,那可能是您的问题。切勿对纯 PHP 文件使用结束标记。

如果这没有帮助,请删除内容类型的 header 并查看通过调用图片 url 实际返回给您的内容,并将数据与原始图像进行比较。这样你就可以确认图片数据是否正确或者有什么不同。

关于PHP - 存储为 BLOB 的图像显示为断开的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618306/

相关文章:

php - PDO_ODBC : Data source name not found and no default driver specified

java - JButton 图像像素化

css - 自举!有没有hidden-sm之类的东西

python - 从图像中获取两个图像,图像中有两个图像粘贴在一个文档中 - Python/C++

mysql - 动态 SQL If 语句?

php - 在 PHP 中设置 session cookie 时遇到问题

php - 试图在 php 数组中获取非对象的属性

PHP session 注销错误

php - 从 MySQL 数据库中选择的数据不显示

mysql - Mysql多列条件排序