来自 blob 数据 PHP 的损坏图像


Broken Image from blob data PHP?

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

我正在尝试将图像上传到数据库并将其存储为 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;
?>

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

您在第一行有一个空格,在<?php之前。如果代码中是这样的,那就麻烦了。在回显图像之前,不应输出任何内容。

如果您确定当前文件正确,您可以这样做

<?php
ob_start();
// do stuff
ob_end_clean();
header("Content-type: image/jpeg");
echo $image;

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

您可以使用转换在phpmyadmin中检查BLOB。


附言 addslashes仅当您将值放在斜杠之间时才有帮助,因此

$id = addslashes($_REQUEST['id']);
$image = mysql_query("SELECT * FROM photo WHERE id='$id'");
很有可能它是其中一个

PHP 文件开头的隐藏 BOM 字符。

请你能改变吗

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

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

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

相反,如果它的开头有"",则意味着至少有一个 PHP 文件的开头有字节顺序标记,需要将其删除。

嗯,我也分享了你的图像损坏的问题,直到我从这个网站阅读这篇文章[http://www.boogiejack.com/html-help/html-help-broken-image.html]。第一个观察结果帮助我浏览了创建表字段时使用的名称,我很震惊地发现我为表字段指定了错误的名称。纠正后,我的形象开始显示,感谢上帝,我快乐得满满的喜悦。请看一下你桌子的字段,也许你和我一样拼写错误。:)