无法显示图像,因为它包含错误(php)
我想显示存储在我的数据库中的图像,但我一直收到该错误 图像作为longblob存储在我的数据库中。 我在upload.php中使用这段代码上传它:无法显示图像,因为它包含错误(php),php,html,sql,image,Php,Html,Sql,Image,我想显示存储在我的数据库中的图像,但我一直收到该错误 图像作为longblob存储在我的数据库中。 我在upload.php中使用这段代码上传它: <body> <form action="upload.php" method="post" enctype="multipart/form-data"> Select image to upload: <input type="file" name="image" /> <input
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="image" />
<input type="submit" name="submit" value="UPLOAD" />
</form>
<?php
if (isset($_POST["submit"])) {
$check = getimagesize($_FILES["image"]["tmp_name"]);
if ($check !== false) {
$image = $_FILES['image']['tmp_name'];
$imgContent = addslashes(file_get_contents($image));
/*
* Insert image data into database
*/
//Insert image content into database
$insert = $pdo->query("UPDATE users SET image='".$imgContent."'"."WHERE id_user = ".$posts[0]->get_id());
if ($insert) {
echo "File uploaded successfully.";
} else {
echo "File upload failed, please try again.";
}
} else {
echo "Please select an image file to upload.";
}
}
?>
<?php
$id = $_GET['id'];
$query = $pdo->prepare('SELECT * FROM users WHERE username LIKE :us');
$query->bindValue(':us', $_SESSION['login'], PDO::PARAM_STR);
$query->execute();
$user = $query->fetchAll(PDO::FETCH_CLASS, "User");
header ('Content-Type: image/png');
echo $user[0]->get_image();
?>
选择要上载的图像:
解决:我添加了ob_end_clean()代码>在标题之前,它工作。为什么要在图像上使用addslashes
?这将改变它,使其无法使用。因为它来自用户,所以请像在getimage中一样使用参数绑定以防止出现问题。首先确保获得了有效的image blob值,然后尝试添加echo base64_encode($user[0]->get_image())代码>为什么不使用准备好的语句addslashes
不足以防止SQL注入,更不用说二进制数据了。我现在删除了addslashes,而是使用准备好的查询。echo base64_encode($user[0]->get_image());不幸的是,他什么也没做。blob值也是有效的,因为我可以通过从数据库手动下载来查看图片您的代码实际上对我有效。get\u image()
到底在做什么?希望不是stripslashes
。