通过php从mysql数据库显示网站上的图像


Display Image on website from mysql database via php

我在这段代码中找不到任何语法或逻辑错误,但我不知道为什么图像没有显示在网页上,也没有显示任何错误,我正在共享代码和我得到的输出。如果你能帮我展示图片,我将非常感谢你。

网页输出

<html>
<body>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "CSE";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$query = "SELECT * FROM upload WHERE id=1";
$result = $conn->query($query);
while($row = $result->fetch_assoc())
{
   header("Content-Type: image/png");
   echo '<img height="300" width="300" alt="logo" src="data:image;base64,'.$row["name"].'">'; 
}
$conn->close();

?>
</body>
</html>

首先,删除标题。您正在输出HTML,而不仅仅是图像+您已经向浏览器发送了HTML,因此您不能在此之后发送任何额外的标题。

然后您需要将blob数据(二进制数据)转换为base64:

while($row = $result->fetch_assoc())
{
    echo '<img height="300" width="300" alt="logo" src="data:' . $row["type"] . ';base64,'.base64_encode($row["name"]).'">'; 
}

用于在同一页面内嵌显示图像。

Edit:为了使其更具动态性,我还添加了来自数据库的"type"。