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