来自blob数据PHP的破碎图像?

时间:2013-02-03 02:55:21

标签: php blob

好的,所以我知道这个问题已被问到,但我仍然无法弄清楚我的代码出了什么问题。

我正在尝试将图像上传到数据库并将其存储为blob,以便它可以在页面上输出。一切正常,一切都存储在mysql数据库中,但当我尝试回显blob时,它会给我一个破碎的图像。这是我的代码。

$file = $_FILES['image']['tmp_name'];

if(!isset($file)) {
echo "Please select image.";
} else {
    $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
    $image_name = $_FILES['image']['name'];
    $image_size = getimagesize($_FILES['image']['tmp_name']);

    if($image_size==FALSE) {
    echo 'that is not an image.';
    } else {
     if (!$insert = mysql_query("INSERT INTO photo VALUES ('', '$image_name', '$image')")) {
      echo "Problem uploading image";
     } else {
      $lastid = mysql_insert_id();
      echo "Image uploaded.<p />Your image:<p /><img src=ShowPics.php?id=$lastid>";
     }
    }

}



?>


<form action="Photosite.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image"></br></br>
<input type="submit" value="Submit">
</form>

我的PHP页面

 <?php

 $id = addslashes($_REQUEST['id']);
 $image = mysql_query("SELECT * FROM photo WHERE id=$id");
 $image = mysql_fetch_assoc($image);
 $image = $image['image'];


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

?>

任何帮助表示赞赏???我只是不知道为什么我会得到一个破碎的图像...

3 个答案:

答案 0 :(得分:2)

<?php之前,第一行有一个空格。如果它与您的代码中的相似,则会出现问题。在回显图像之前不应输出任何内容。

如果你确定当前文件是正确的,你可以

<?php
ob_start();

// do stuff

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

使用此解决方法,如果de DB中的blob是正确的,则显示图像。

您可以在phpmyadmin using transformations中查看BLOB。


P.S。 addslashes只有在斜杠之间放置值时才有用,所以

$id = addslashes($_REQUEST['id']);
$image = mysql_query("SELECT * FROM photo WHERE id='$id'");

答案 1 :(得分:1)

在你的一个PHP文件的开头很可能是hidden BOM个字符。

请你改变

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

//header("Content-type: image/jpeg");
echo substr($image, 0, 20);

看看它是否像一个有效的jpeg文件的开头 - 类似'ÿØÿàJFIF'

如果它在开始时有'',则表示至少有一个PHP文件在其开头有字节顺序标记,并且需要将其删除。

答案 2 :(得分:0)

嗯,我也分享了这个破坏图像的问题,直到我从这个网站上阅读这篇文章[http://www.boogiejack.com/html-help/html-help-broken-image.html]。第一次观察帮助我查看了我在创建表格字段时使用的名称,我很震惊地看到我为表格字段命名错误。在纠正它们之后,我的形象开始显现,感谢上帝,我很高兴充满欢乐。请查看你桌子上的字段,也许你像我一样拼错了。 :)