无法通过PHP将上传的图像显示到MySQL中

时间:2012-02-09 09:07:56

标签: php mysql jpeg

我已将我的代码调整到最低限度以试图找出为什么我无法显示我上传的任何图像&通过PHP存储到MySQL。如果有人能指出我的错误,我会非常感激。

执行时,浏览器报告图像无法显示,因为它包含错误。

然而,图片上传&在同一环境中运行的其他数据库中显示正常。

我已经检查过上传后数据库是否包含blob。

我想我错过了一些明显的东西。

上传表单..

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

表单处理程序..

<?php
include("../mylibrary/login.php");

login();

$imagefile = file_get_contents($_FILES['image']['tmp_name']);
$imagefile = mysql_real_escape_string($imagefile);
$query="UPDATE pieces SET image_full='$imagefile' WHERE assetno='1'";
$result = mysql_query($query);

?>

图像显示器..

<?php
include("../mylibrary/login.php");

login();
echo "<body>";
echo "before";
echo "<img src=\"showimage.php\" alt=\"showimage\">";
echo "after";

?>

叫做函数......

<?php
include("../mylibrary/login.php");
login();
$query = "select * from pieces where assetno='1'";
$result=mysql_query($query);
$row=mysql_fetch_array($result, MYSQL_ASSOC);
$image=$row['image_full'];
header("Content-type: image/jpeg"); 
echo $image;
?>

4 个答案:

答案 0 :(得分:1)

将image_full字段类型更改为MEDIUMBLOB / BLOB

用户$image = chunk_split(base64_encode(file_get_contents("image.jpg"))); 而不是$imagefile = file_get_contents($_FILES['image']['tmp_name']);

并在show image功能中使用如下图像。

header("Content-type: image/jpeg"); 
echo base64_decode($image);

答案 1 :(得分:0)

使用mysql_escape_string或addslashes并清除浏览器缓存以查看它是否有效

答案 2 :(得分:0)

如果上述解决方案不适合您。 尝试增加数据库中字段的长度。 如果它仍然不起作用, 您可以检查图像格式是RGB还是CMYK。 格式应该是RGB在屏幕上看到。 确保您可以尝试在浏览器中打开相同的图像文件。

答案 3 :(得分:0)

我认为它与您的数据库编码有关。某些编码不支持二进制数据。

如果您无法更改编码,可能在保存之前css base64对数据进行编码,并在显示时对其进行解码。唯一的问题是base64会将大小增加3。