0

我在我的数据库中上传了一张图片。数据类型是 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>
4

2 回答 2

1

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

仅供参考:未经测试。

$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="" />';
    }
于 2013-07-24T07:25:29.810 回答
0

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

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

  • 如果您可以删除结束 php 标记 (?>)。您实际上并不需要它,当您在关闭标记后有空格字符时,您可以避免出现问题,该字符将被写入响应并因此导致图像损坏。
  • 您还应该指定 Content-Length 标头。这不是强制性的,但浏览器会知道它必须下载的文件有多大。
  • 指定一些缓存控制标头(https://en.wikipedia.org/wiki/List_of_HTTP_header_fields),以便浏览器可以缓存您的图像,这样就不会在每次图像出现在网站上时导致整个页面加载和 mysql 查询。
  • 您可以将 ETag 和/或 Last-modified 存储在数据库中,您可以检索并放入标题中。
于 2013-07-23T10:43:27.993 回答