gpt4 book ai didi

php - 无法从表中检索图像数据并显示图像

转载 作者:行者123 更新时间:2023-11-29 22:30:12 24 4
gpt4 key购买 nike

我正在尝试使用 PHP 和 MySQLi 将图像文件上传到我的数据库,但我遇到了一个非常令人困惑的错误。该表有两列,“标题”和“图像”。 “标题”是文件名,“图像”是图像数据。两个表都不允许接受 NULL。当我上传文件时,数据将存储到表列中。 “标题”包含正确的值,但“图像”列包含“<binary data>” '。

由于表列不接受 NULL 值,我假设它是文件的数据,但是当我尝试在 showimage.php 中检索并显示图像数据时,它告诉我图像数据为 NULL。

我使用 BLOB 数据类型在表中存储图像数据。就我而言,基于在线资源和示例,它应该有效。谢谢。

代码:

PHP:

上传.php

if (isset($_POST['submit'])) {
$title = $_FILES['image']['name'];
$data = $_FILES['image']['tmp_name'];
$content = file_get_contents($data);
$query = "INSERT INTO images (title, image) VALUES (?, ?)";
$statement = $databaseConnection->prepare($query);
$statement->bind_param('sb', $title, $content);
$statement->execute();
$statement->store_result();
$creationWasSuccessful = $statement->affected_rows == 1 ? true : false;
if ($creationWasSuccessful)
{
echo "Works!";
} else {
echo 'failed';
}
}

showimage.php

if (isset($_GET['id'])) {

$id = $_GET['id'];
$query = "SELECT * FROM images WHERE id = ?";
$statement = $databaseConnection->prepare($query);
$statement->bind_param('i', $id);

$statement->execute();
$statement->store_result();

if ($statement->num_rows >= 1)
{
$statement->bind_result($imageid, $title, $image)
while ($statement->fetch()) {
if ($image == NULL) {
echo "Image data does not exist!";
} else {
header("Content-Type: image/jpeg");
echo $image;
}

}
}
}

HTML

<form action="uploads.php" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" name="submit">
</form>

最佳答案

首先,您需要保存输出中的图像 file_get_contents到您的数据库。然后你把它放到 imagecreatefromstring并显示您的图像。

这是一个简单的例子。也许这对你有帮助:)

$data = file_get_contents("ACL.jpg");
$img = imagecreatefromstring($data);
header("Content-Type: image/jpeg");
imagejpeg($img);

编辑:

您只需输入以下代码:

$statement->bind_result($imageid, $title, $image)
while ($statement->fetch()) {
if ($image == NULL) {
echo "Image data does not exist!";
} else {
$img = imagecreatefromstring($image);
header("Content-Type: image/jpeg");
imagejpeg($img);
}

}

编辑修复:

uploads.php

在此文件中,您需要更改 $statement->bind_param('sb', $title, $content);成为$statement->bind_param('ss', $title, $content);

if (isset($_POST['submit'])) {
$title = $_FILES['image']['name'];
$data = $_FILES['image']['tmp_name'];
$content = file_get_contents($data);
$query = "INSERT INTO images (title, image) VALUES (?, ?)";
$statement = $databaseConnection->prepare($query);
$statement->bind_param('ss', $title, $content);
$statement->execute();
$statement->store_result();
$creationWasSuccessful = $statement->affected_rows == 1 ? true : false;
if ($creationWasSuccessful)
{
echo "Works!";
} else {
echo 'failed';
}
}

showimage.php然后你用这个来展示它:

$img = imagecreatefromstring($image);
header("Content-Type: image/jpeg");
imagejpeg($img);
在你最后的陈述中

if (isset($_GET['id'])) {

$id = $_GET['id'];
$query = "SELECT id,title,image FROM images WHERE id = ?";
$statement = $databaseConnection->prepare($query);
$statement->bind_param('i', $id);

$statement->execute();
$statement->store_result();

if ($statement->num_rows >= 1)
{
$statement->bind_result($imageid, $title, $image)
while ($statement->fetch()) {
if ($image == NULL) {
echo "Image data does not exist!";
} else {
$img = imagecreatefromstring($image);
header("Content-Type: image/jpeg");
imagejpeg($img);
}

}
}
}

希望这也能正常工作,我已经测试过它并且运行良好......:)

关于php - 无法从表中检索图像数据并显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29873722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com