在 img 标签中显示来自 MySQL 的 blob

我制作了一个 API,它向我发送了许多数据。其中之一是来自我的 MySQL 数据库的 blob。我可以看到 blob 编码为 base64,但我不能在 img 标签中使用它来显示我的图像。


我已经看过其他人的问题了。顺便说一下,我认为 img 标签是正确的。也许是 JSON 对我的数据做了一些事情......


我来自 API 的数据


array (size=2)

  0 => 

    object(stdClass)[1]

      public 'LId' => string '1' (length=1)

      public 'LNom' => string 'Visual Paradigm' (length=15)

      public 'IImage' => string '\/9j\/4AAQSkZJRgABAQAAAQABAAD'... (length=8455)

  1 => 

    object(stdClass)[2]

      public 'LId' => string '2' (length=1)

      public 'LNom' => string 'Visual Studio' (length=13)

      public 'IImage' => string '\/9j\/4AAQSkZJRgABAQEAYABgAAD'... (length=44843)


API调用:


$url = "localhost/projet/api/fake/getSoftwaresFAKE.php";

     $data = CallAPI('GET', $url);


     $json = json_decode($data);


     echo '<img src="data:image/jpeg;base64,'.($json[1]->IImage).'"/>';

接口代码


<?php

// on se connecte à MySQL et on sélectionne la base

$mysqli = new mysqli("192.168.1.23", "API", 'Pa$$w0rd', "AtoutProtectDB");


if ($mysqli->connect_errno) {

    echo "Echec lors de la connexion à MySQL : (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;

}

// on crée la requête SQL 

$req = $mysqli->query('SELECT LId, LNom, IImage FROM Logiciels, Images WHERE Logiciels.IId = Images.IId'); 



$req->data_seek(0);

while ($row = $req->fetch_assoc()) { 

    $data [] = ['LId' => $row['LId'],'LNom' => $row['LNom'],'IId' => base64_encode($row['IImage'])];

}


echo json_encode($data);

?>


呼如林
浏览 381回答 2
2回答

千巷猫影

您应该检查返回的值$json[1]->IImage是否是您正在等待的值以及它是否正确工作(例如此处)。我不知道你的图片的文件类型,但请确保data:image/jpeg是正确的。

森栏

好的,我找到了问题所在。我在这个项目中为我的队友制作了一个假的 php API。所以我在 VSCode 的一个变量中复制和过去了编码为 base64 的数据。这是因为我的队友可以使用来自 API 的正确数据格式测试他的网站,而无需在虚拟机上使用服务器,因为他的 PC 太弱而无法使用 VMWare...我的问题就在这里。当我通过数据时,VSCode 在字符串的每个特殊字符后添加一个 '\' ......这可能是 VSCode 的 AddOn 做到的。所以谢谢你并注意你在 VSCode 上的插件
打开App,查看更多内容
随时随地看视频慕课网APP