【问题标题】:Broken Image from blob data PHP?来自blob数据PHP的图像损坏?
【发布时间】:2013-02-03 02:55:21
【问题描述】:

好的,我知道有人问过这个问题,但我仍然无法弄清楚我的代码出了什么问题。

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


【解决方案1】:

第一行&lt;?php 之前有一个空格。如果它在你的代码中是这样的,那就是问题所在。在回显图像之前不应输出任何内容。

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

<?php
ob_start();

// do stuff

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

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

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


附: addslashes 仅在将值放在斜杠之间时才有帮助,所以

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

【讨论】:

    【解决方案2】:

    很有可能它是您的一个 PHP 文件开头的 hidden BOM 字符。

    请你改一下

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

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

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

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

    【讨论】:

    • 好的,我这样做了,但我发现在运行 Photosite.php(第一个代码)时没有任何变化。所以我把整个 ShowPics.php 变成了 /* */ notes,但仍然没有任何改变。所以一定是ShowPics.php里面的东西有问题还是第一部分的img src代码有问题?
    【解决方案3】:

    嗯,我还分享了您的图像损坏问题,直到我从该站点 [http://www.boogiejack.com/html-help/html-help-broken-image.html] 阅读此帖子。第一次观察帮助我了解了我在创建表字段时使用的名称,我震惊地看到我为表字段提供了错误的名称。改正后,我的形象开始出现,感谢上帝,我是不是很开心,很开心。请查看表格的字段,也许您像我一样拼错了。 :)

    【讨论】:

      猜你喜欢
      • 2015-04-29
      • 2015-11-20
      • 2018-05-05
      • 2015-06-09
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多