【问题标题】:Error displaying blob image in php/html在 php/html 中显示 blob 图像时出错
【发布时间】:2014-02-13 06:51:56
【问题描述】:

我正在尝试显示来自 MySQL 表的 blob 字段的图像。看起来我在以下行中有某种错误。一旦我输入“header(“Content-type:image/jpeg”)”,事情就会变得一团糟,而不是显示网页,而是显示页面的所有源代码。

请告诉我如何更正。

<div class="image" align="left">
    <a href="<?php header("Content-type: image/jpeg"); echo $rec['image']; ?>">
        <img src="<?php echo $rec['image']; ?>" width="150" border="0"/>
    </a>
</div><!-- image --> 

【问题讨论】:

  • 将"Content-type: image/jpeg" 更改为'Content-type: image/jpeg'。你正在嵌套"
  • 这不是问题,实际上也不是嵌套,因为标题 "s 在 PHP 中
  • 改成单引号后还是一样的问题。
  • 不要使用任何标题。只需在 src 属性中回显 blob 内容即可。

标签: php html


【解决方案1】:

您通常不会将实际图像内容放在图像标记的src= 属性中。相反,您指向图像文件的 URL。

(include the image source directly in the HTML 有很多方法,但它并不适用于所有浏览器,而且您的&lt;a&gt; 链接仍然无法正常工作。

相反,最好的方法是创建一个单独的 PHP 文件来提供图像。

您的 HTML:

<div class="image" align="left">
<a href="myimage.php?key=<?php echo($key) ?>"><img src="myimage.php?key=<?php echo($key) ?>" width="150" border="0"/></a>
</div><!-- image -->

myimage.php:

<?php
    header("Content-type: image/jpeg");
    $key = $_GET['key'];
    // todo: load image for $key from database
    echo $rec['image'];

【讨论】:

  • 如何将记录密钥从主 php 传递到 myimage.php?这样我就可以获取我在主程序中处理的相同记录。
  • 用关键变量更新了我的答案
【解决方案2】:

您正在尝试将图像数据内嵌到内容中。唯一可行的方法是通过数据 URI data URI。比如:

<img src="data:image/jpeg;base64,<?= base64_encode($rec['image']) ?>" width="150" border="0" />

但是,您可能想要将其放入单独的脚本中。所以你的 HTML 将是:

<a href="showimage.php?id=XXX"><img src="showimage.php?id=XXX" width="150" border="0" /></a>

您的 showimage.php 脚本将是:

<?php
// Get $rec from database based on the $_GET['id']
header('Content-Type: image/jpeg');
echo $rec['image'];
?>

【讨论】:

  • 您使用的是 IE7 吗?数据 URI 仅在 IE8 及更高版本以及 Chrome、Firefox、Safari 和 Opera 7.2 以后的所有版本中受支持
  • 我使用 myPHPadmin 手动加载了一张图片并尝试了这段代码。它只显示图像的下 60%。
    " width="150" border=" 0" />
    下面是image的CSS入口。 .image{ 宽度:155px;浮动:左;
【解决方案3】:

我已经以另一种可能有用的方式从我的数据库中检索 blob,这是代码示例。看看它是否符合您的需求,如果您需要更多帮助,请告诉我。

while ($row = mysql_fetch_array($hc_query2)) {
                        $title = $row['title'];
                        $text = $row['text'];
                        $image = $row ['image'];
                        $output ='<div class="HCInstance"><img src="data:image/jpeg;base64,' . base64_encode($image) . '" alt="High Council" width="100px" height="100px"/>
                        <div class="HCHeader"><h2>'.$title.'</h2></div><br/><div class="HCDetails"><p>'.$text.'</p></div></div>';
                        echo $output;
                    }

【讨论】:

  • 在他的原始 HTML 中,他在图像周围有一个 &lt;a&gt; 标记,链接到图像本身。使用data: url 是不可能做到这一点的。
  • 嗯显然你是对的,但他为什么将图像链接到自身?会是什么情况?
猜你喜欢
  • 1970-01-01
  • 2017-07-28
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多