我需要为客户做一个网页,将图像上传到数据库并显示它们。
我实现了将图像上传到数据库,但我有麻烦显示它们,但我不知道为什么
下面是我的代码:<!DOCTYPE html>
<head>
<body>
<form action="form.php" method="post" enctype="multipart/form-data">
File:
<input type="file" name="image" /> <input type="submit" value="Upload" />
</form>
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test" ) or die(mysql_error());
$file = $_FILES['image'] ['tmp_name'];
if (!isset($file)) {
echo "<br>Please select an image.";
}
else {
$image = addslashes(file_get_contents($_FILES['image'] ['tmp_name']));
$imageName = addslashes($_FILES['image']['name']);
$imageSize = getimagesize($_FILES['image']['tmp_name']);
if ($imageSize == FALSE)
echo "<br><br>Thats not an image. <br><br>";
else{
if (!$insert = mysql_query("INSERT INTO imgup VALUES ('','$imageName','$image')"))
echo "Problem uploading the image.";
else{
$lastId = mysql_insert_id();
echo "Article uploaded.<p /> Your image:<p /> <img src=get.php?id=$lastId>";
}
}
}
?>
</body>
</html>
这是我的文件谁把图像blob变成一个图像:
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test" ) or die(mysql_error());
$id = addslashes($_REQUEST['id']);
$image = mysql_query("SELECT * FROM blog WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image = $image['image'];
header("Content-type: image/jpeg");
echo $image;
?>
最后,图像没有显示,这就是我得到的:http://goo.gl/gi1Uuc
如果我去检查我的数据库,图像已经成功上传…
根据文件使用内联base64编码。使用:
echo '<img src="data:image/jpeg;base64,'.base64_encode( $image ).'"/>';
字体:base64_encode
或
将T
大写(Type),因为在IE中会出现错误。尝试使用file_get_contents函数打印。
header('Content-Type: image/jpeg');
echo readfile($image);
我不会在数据库中存储任何图像。您应该将其保存为文件,并将文件名存储在数据库中。然后,您可以配置从哪个目录提供映像,而不必担心映像的完整路径,或者在db中存储二进制数据(呸)。
尝试更改:
$image = mysql_query("SELECT * FROM blog WHERE id=$id");
:
$image = mysql_query("SELECT * FROM blog WHERE id = '$id'");
用addslashes
转义图像文件可能会损坏它,imagesize
测试应该足够