【问题标题】:Displaying blob images in php在 php 中显示 blob 图像
【发布时间】:2017-07-28 00:13:27
【问题描述】:

我正在尝试使用图像源显示博客图像。以下是我如何使用 php 将图像插入 MYSQL 数据库并存储到名为“picture”的目录中。插入成功

<form method="post" action="post.php" enctype ="multipart/form-data">
  <input type="file" accept="image/png, image/jpeg, image/gif"  name="image" id="image"/> 
   <input type="submit" name="post" value="Post" class="btn btn-primary btn btn-info"/>
 </form>

  if (isset($_POST['post']) && isset($_FILES['image'])) {
   $target_dir = "picture/";
    $target_file = $target_dir . basename($_FILES["image"]["name"]);
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
    $image=basename( $_FILES["image"]["name"],".jpg");
    $stmt = "INSERT INTO post (image) values (:image)";
    $p = $MySQLi_CON -> prepare($stmt);
    $results = $p -> execute(array(
                    ":image" => $image
                ));
    }

但是,这里的问题是,当我尝试在 img-src 中显示它时,图像链接已损坏并且不显示任何内容。我试过echo $key['image'],它似乎输出了正确的图像名称而不是图像本身

<tbody>
          <?php 
                     $query = "SELECT * FROM test";
                     $data = $MySQLi_CON->query($query);
                     foreach ($data as $key ) {
                   ?>
          <tr class="active">
            <td><div class = "col-sm-6 col-md-2">
      <a  class = "thumbnail">
        <?php echo '<img src="data:image/jpeg;base64,'.base64_encode( $key['image'] ).'" alt = "Generic placeholder thumbnail"/>';?>        
      </a>
   </div></td>  
            <td><?php echo $key['image'];?></td> //it gives value such as picture.jpg, image.png
          </tr>
                <?php
                  }
                  ?>          
   </tbody>

【问题讨论】:

  • 一个建议。不要将图像存储在mysql中。而是将图像的图像源存储在更有用的数据库中。
  • 如果您想接受@ResheilAgarwal 的建议,Amazon S3 存储之类的东西将帮助您存储图像
  • 您认为您在哪里将 BLOB 存储到数据库中?您插入的只是变量$image 的内容,其值只是basename( $_FILES["image"]["name"],".jpg") - 这不是BLOB ...

标签: php image blob


【解决方案1】:

您没有将完整路径存储在 $image 变量中,请尝试以下操作:

$image = $target_dir 。 basename($_FILES["image"]["name"].".jpg");

还请考虑有关“basename”的手册: http://php.net/manual/en/function.basename.php

您可能还想将数据库中的路径视为一件坏事,因为如果您的文件结构中的路径发生变化,那将导致各种有趣的事情发生。

您可以像现在一样只保存文件名来避免破坏,只需更正 basename 语句中的扩展名问题,然后在显示代码上添加文件名的路径。

如果您不介意大型数据库,您可以将图像源存储在数据库中。我一般不建议在数据库字段中使用源,但在记录很少的较小表上应该没问题。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 2011-06-04
    • 2015-04-09
    • 2014-08-01
    • 1970-01-01
    相关资源
    最近更新 更多