【问题标题】:Doesn't show blob image不显示斑点图像
【发布时间】:2014-04-24 16:25:10
【问题描述】:

我在显示以 blob 形式存储在数据库中的图像时遇到问题。我搜索了很多论坛,但没有找到任何答案。

我将代码分成两个文件。在 index.php 中,我插入图像并尝试从 get_image.php 文件中加载它。

这里是 index.php

<form action="index.php" method="POST" enctype="multipart/form-data">
                  File:
                  <input type="file" name="image"> <input type="submit" value="upload">
                </form>

                <?php 
                  $file = $_FILES['image']['tmp_name'];

                  if(!isset($file)){
                    echo "Please select an image.";
                  }

                  else{
                    $image_name = mysql_real_escape_string($_FILES['image']['name']);
                    $image = mysql_real_escape_string(file_get_contents($_FILES['image']['tmp_name']));
                    $imageType = mysql_real_escape_string($_FILES['image']['type']);
                    $image_size = getimagesize($_FILES['image']['tmp_name']);


                    if($image_size == FALSE){
                      echo "That's not an image";
                    }
                    else{
                      if (!$insert = mysql_query("UPDATE 'table_name' SET `image` = '$image' WHERE 'row_name' = '$student_id'")){                                                        
                        echo "Problem updating image";
                      }

                      else{                                                      
                        echo "<img src=get_image.php>";
                      }

                    }
                  }
                ?>

还有get_image.php

<?php 

        $query = mysql_query("SELECT image FROM table_name WHERE student_id = 51686");
        while($row= mysql_fetch_assoc($query)){
            $imageData = $row['image'];
        }

        header("Content-type: image/png");
        echo $imageData;        
?>

谁能帮忙。我的 php 版本是 5.2 在输出中有图像图标,但没有图像。如果我右键单击并尝试将其另存为图像,它不是图像格式,它保存为 get_image.php。所以我不知道是什么问题。

【问题讨论】:

  • 尝试将内容类型改为text/plain,直接打开图片url。查找 png 代码前面的空格和错误消息。 (您是否连接了您的 dbms 并在 get_image.php 中选择了一个 db?)
  • @urzeit 更改为 text/plain 没有区别,没明白,如何直接打开 Blob 中的图像,我从 db 中获取并自动放置,png 代码以“? Jw?=wf?yf?y?)?”。是的,我在 get_image.php 中连接了我的数据库
  • 从这里我们可以看到,数据不是有效的 png(以 \211PNG 开头。所以我们必须看看你存储和加载到你的数据库的方式。
  • @urzeit 我尝试手动插入图像,并从此代码更新它,仍然没有结果

标签: php mysql blob


【解决方案1】:

请尝试在下面插入这样的记录

 $tmpImageName=$_FILES['files']['tmp_name'];
 $handle      = fopen( $tmpImageName, 'r' );
 $content = fread( $handle, filesize( $tmpImageName ) );
 fclose($handle);

 $sql='insert into imagetest(image)values("'.mysql_escape_string($content).'")';

 mysql_query($sql) or die(mysql_error());

然后尝试显示像这里的图像

$res = mysql_query("SELECT * FROM imagetest"); 
 while ($row = mysql_fetch_assoc($res)) {
   echo "<img src=data:image/jpeg;base64," . (base64_encode(($row['image']))) . " >";
  }

【讨论】:

  • 您能否尝试使用 phpmyadmin 使用插入记录在 mysql 中上传图像并尝试此代码,我已经尝试过这种方式,但也请稍等一下,我还有另一个解决方案
  • 还是一样的结果
  • 对不起,它不起作用,插入工作,无论如何无法显示图像,图像的图片损坏。
  • 您的代码在本地主机上运行良好,但在网络上它不显示图像,它只显示损坏的图像的图标
  • 我在服务器上截断了表格并上传了新图像,并且效果很好
【解决方案2】:
$pdo = new PDO('mysql:dbname=database_name;host=localhost', 'username', 'password',
        array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

      $imageName = mysql_real_escape_string($_FILES["image"]["name"]);
      $imageData = file_get_contents($_FILES["image"]["tmp_name"]);
      $imageType = mysql_real_escape_string($_FILES["image"]["type"]);

      $stmt = $pdo->prepare('INSERT INTO image (name,image) VALUES (:name,:image)');
      $stmt->bindParam(':image', $imageData, PDO::PARAM_LOB);
      $stmt->bindParam(':name', $imageName);
      $stmt->execute(array('name' => $imageName, 'image' => $imageData));
      echo "Image Uploaded";


      $res = mysql_query("SELECT * FROM image "); 
      while ($row = mysql_fetch_assoc($res)) 
      {                                                  
        echo "<img src=data:image/jpeg;base64," . (base64_encode(($row['image']))) . " style='width:60px;height:60px;'>";
      }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    相关资源
    最近更新 更多