使用PHP从Blob加载PNG时出现问题

问题描述

好的,所以对我来说,我的header()没做任何事情。我尝试将其移到文件的最顶部,除非我将其放在自己的位置,否则什么也没有改变,但是文件的其余部分没有运行,但确实发送了标头。

编辑:我已根据您的建议更新了代码,但仍无法正常工作。下面是我检查页面时的“网络”选项卡的图像。我注意到最大的事情是正在进行调用,但是它为每个图像获取的数据相同,并且其数据量很小。

enter image description here

编辑:我在chrome中检查时会收到“ URL无效”错误,除非删除data:image / png; base64,

推荐人政策:strict-origin-when-cross-origin

我似乎无法正常工作。 png图像应从数据库中提取,然后显示在HTML中。 (是的,我知道这不是SQL注入安全的方法)我假设从循环中调用它存在一些问题,但是我不确定。还是找不到getImage.php来使用它,我是否需要导入它或代码中更早的内容?它确实可以正确提取item_id。结果只是给我一个坏了的图像框。我知道我的getImage.php正在输出格式正确的图像,因为我直接从那里获取了输出,并插入了它的调用位置,并且图像已显示出来。所以这告诉我下面这行是我的问题

echo ('<td><img src='"getImage.php?image_id="'  . $row["item_id"].'"></td><td>');

如果我按如下方式进行编辑,它可以正常工作(但显然,它为每个条目都提供了相同的图像)DBS是getImage.php输出的解码字节字符串。

echo ('<td><img src="data:image/png;base64,DBS"></td><td>');

面向前端页面的PHP(blackmarket.php:

    $sql="SELECT * FROM `item` WHERE 1";
  $result = $link->query($sql);
  echo("<table>");
    if ($result->num_rows > 0) {
    // output data of each row
    echo("<tr>");
    while($row = $result->fetch_assoc()) {
      $newrow=0;
      echo("<td>");
      echo ('<img src="getImage.php?image_id='.$row['item_id'].'" />');

getImage.php:

  <?php
    require_once "connect.php";
    if(isset($_GET['item_id'])) {
        $sql = "SELECT item_img FROM item WHERE item_id=" . $_GET['item_id'];
        $result = mysqli_query($link,$sql) or die("<b>Error:</b> I can't find the image <br/>" . mysqli_error($link));
        $row = mysqli_fetch_array($result);
        header("Content-type: image/png");
        
        header("Content-Length: " . strlen($row["item_img"]));
        echo  $row["item_img"];
    }
    mysqli_close($link);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)