【问题标题】:Problem displaying images saved as blob images显示保存为 blob 图像的图像时出现问题
【发布时间】:2019-01-20 22:05:35
【问题描述】:

在我的数据库中显示存储为 blob 的图像时遇到问题,因为图像不显示,而是显示疯狂的字符和符号,我试图更改 php 的标签但无济于事。帮助,这是我的代码:请注意,我希望将所有类型的图像保存为 blob(jpg、jpeg、gif、svg、png) - 在此先感谢

    <?php
        include 'include/connect.php';
        $sql = "SELECT * FROM room_details ORDER BY id ASC LIMIT 2, 1;";
        $result = mysqli_query($conn, $sql);
        if (mysqli_num_rows($result) > 0) {
          while($row = mysqli_fetch_assoc($result)) {

    ?>


        <div class="room-thumb"><?php echo '<img alt="room 3" class="img-responsive" src="data:image;base64,'.$row['image'].'">'; ?>
            <div class="mask">
              <div class="main">
                <h5><?= $row['room_type']; ?></h5>
                <div class="price"><?= $row['room_name']; ?><span>a night</span></div>
              </div>

                <a href="room-detail.html" class="btn btn-primary btn-block">Read More</a>
              </div>
          </div>

          } ?>

【问题讨论】:

  • 能否请您发布来自 src 属性的渲染链接以及所有字符和符号。
  • 房间 3��@�B8�DX�Fx�H��J��L؄N��P�R8�TX�Vx�X��Z��\؅^�� `�b8�dX�fx�h��j��l؆n��p�r8�tX�vx�x��z��|؇~�����8��X��x�� ������؈������8��X��x��������؉����E��8��X��x�������� ���������8��X��x������������������8
  • 它就是这样显示的

标签: php html mysqli


【解决方案1】:

由于blob url是用base64解码的,所以需要先编码。您可以使用 JavaScriptPHP 来执行此操作。

JavaScript:

使用 JavaScript,您只需使用 atob() 函数对您的 base64 网址进行编码,如下所示:

<script>
  var x = <?php echo $row['image'] ?>
  document.getELementById("code").innerHTML = atob(x);
</script>

<div class="room-thumb"><?php echo '<img alt="room 3" class="img-responsive" src="data:image;base64,' ?><span id="code"></span><?php echo '">'; ?>
    <!-- DIV CONTENT HERE -->
</div>

但是,正如其他 SO thread 中所述,如果您使用 PHP 本身或其他 JavaScript 方法(在同一线程中提到)来检索和编码 base64 url​​,这将是一种更好的方法,因为上述方法不安全.


PHP:

使用 PHP,您可以像这样在将 base64 url​​ 输出到 HTML 之前对其进行编码:

<?php echo '<img alt="room 3" class="img-responsive" src="data:image;base64,' . base64_encode(.$row['image']).'">'; ?>

或者您可以创建一个新的 php 文件,在该文件中对 PHP 进行编码,然后将编码后的 base64 url​​ 回显到您的 HTML,如下所示:

    <!-- PHP file -->
    <?php
      $id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? intval($_GET['id']) : 0;
      $image = base64_encode(getImageFromDatabase($id)); // your code to fetch the image
    
      header('Content-Type: image/jpeg');
      echo $image;
    ?>

    <!-- HTML -->
    <img src="image.php?id=<?php echo $image_id; ?>" />

查看其他SO thread 中接受的答案,以更深入地解释上述两种 PHP 方法。

【讨论】:

  • 谢谢大家的时间,它工作得很好 - AndrewL64 我真的很感激
猜你喜欢
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 2018-02-13
  • 2022-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
相关资源
最近更新 更多