如何从MySQL数据库中查看获取图像

时间:2013-07-23 10:10:09

标签: php html mysql image

我在我的数据库中上传了一张图片。数据类型是BLOB。现在我想在浏览器中查看此图像。我写了以下代码,但它没有生成图像。请检查一下。

由于

<?php

    include 'connect.php';
    //$id= $_GET['product_id'];

    $query_images = "SELECT image FROM product_images WHERE product_id=121";

    if (!$query_images_result = mysql_query($query_images))
    {
        echo mysql_error();
    }
    else
    {

         $fetch_images = mysql_fetch_array($query_images_result);

         $print_images = $fetch_images['image'];

         header('Content-type:image/jpeg');

         echo $print_images;
    }

?>

文件2

<body>

<img src='single_product_image_show.php' alt="image" />

</body>

2 个答案:

答案 0 :(得分:1)

也许是这样的?您可能想使用base64 encoding来构建图像

仅供参考:未经测试。

$sql = "SELECT `image` FROM `product_images` WHERE `product_id`=121 LIMIT 1";

$query_images_result = mysql_query($sql);

    if (!$query_images_result)
    {
        echo mysql_error();
    }
    else
    {

       list($print_images) = mysql_fetch_array($query_images_result);

       $base64source = "data:image/jpeg;base64," . base64_encode($print_images);
       echo '<img src="'.$base64source.'" alt="" />';
    }

答案 1 :(得分:0)

可能发生这种情况的原因有多种。首先直接尝试你的脚本而不用“header('Content-type:image / jpeg');”所以你可以看到它实际返回的内容。像http:// [youhostname] /single_product_image_show.php我假设你会看到一些错误。

从php提供图像的一些最佳实践:

  • 如果你可以删除结束php标签(?&gt;)。实际上并不需要它,如果在关闭标记之后有空格字符,你可以避免问题,这些字符将被写入响应,因此会导致图像损坏。
  • 您还应指定Content-Length标头。这不是强制性的,而是浏览器 会知道它要下载的文件有多大。
  • 指定一些缓存控制标头(https://en.wikipedia.org/wiki/List_of_HTTP_header_fields),以便浏览器可以缓存您的图像,这样每次图像显示在网站上时都不会导致整页加载和mysql查询。
  • 您可以在数据库中存储ETag和/或Last-modified,您可以将其检索并放入标题中。