ここでスタックオーバーフローに関する同様の質問を見たことがありますが、答えを理解できなかったので、自分で質問を投稿して、役立つプログラマーに連絡することにしました。データベースに保存されている画像を表示しようとしていますが、画像リンクが壊れています。次のように2つのphpファイルがあります。
<html>
<head>
<title>Upload an image</title>
</head>
<body>
<form action="image_practice.php" method="POST" enctype="multipart/form-data">
Image: <input type="file" name="image"> <input type="submit" value="Upload Image">
</form>
<?php
if (function_exists('hex2bin') !== true)
{
function hex2bin($data)
{
return pack("H*", $data);
}
}
//file properties
$file= $_FILES['image']['tmp_name'];
if (!isset($file))
echo "Please select an image";
else{
$image = bin2hex(file_get_contents($_FILES['image']['tmp_name']));
$image = hex2bin($image['Image']);
if ($image_size==FALSE)
echo "That's not an image";
else {
if(!$insert = mysql_query("INSERT INTO ImageDetails VALUES('','$image_name','$image')"))
echo "Problem Uploading image.";
else {
$lastid= mysql_insert_id();
echo "Image Uploaded.<p />Your Image:<p \><img src='GetImage_prac.php?id=$lastid'>";
}
}
}
?>
</body>
</html>
次に、次のように画像を表示する別のphpファイル:
<?php
if (function_exists('hex2bin') !== true)
{
function hex2bin($data)
{
return pack("H*", $data);
}
}$id=addslashes($_REQUEST['id']);
$image= mysql_query("SELECT * FROM ImageDetails WHERE id=$id");
$image= mysql_fetch_assoc($image);
$image= $image['Image'];
header("Content-type: image/jpeg");
echo $image;
?>
画像が表示されない理由がわかりません。誰でも助けることができますか?テーブル定義は次のようになっていると思います。
CREATE TABLE ImageDetails2
(
ImageId int NOT NULL AUTO_INCREMENT,
Name varchar(30) NOT NULL,
Image BLOB,
PRIMARY KEY(ImageId)
);