首页 > 解决方案 > 如何用 PHP 显示 blob?

问题描述

为什么我的 php 不能显示图像?

<?php
  include("sql.php");
  //$sql = "SELECT * FROM filesdb WHERE fileid = 5";
  $id = $_GET['id'];
  // do some validation here to ensure id is safe
  $sql = "SELECT * FROM filesdb WHERE fileid =$id";
  echo $sql."<br>";
  $result = $conn->query($sql);

  if ($result->num_rows > 0) {

     while($row = $result->fetch_assoc()) {

        //header('content-type: image/jpeg');

        echo  "<br>Fileid:".$row['fileid'];
        echo  "<br>FileName:".$row['filename'];
       header("Content-Type: image/jpeg");
       echo "<br>".$row['dbforfile'];
     }

它可以显示fileidfilename,但不能显示dbfofile,这是一个 BLOB。

标签: phpmysql

解决方案


你只做一张图片,所以你不需要循环。但是如果你想做倍数;您需要使用img标签并调用另一个 PHP 脚本,就好像它是图像中的图像一样,src并让该脚本输出图像(带有标题)。或者您可以使用 base64 编码data作为标签中的图像源:

 while($row = $result->fetch_assoc()) {    
     echo "<br>Fileid:".$row['fileid'];
     echo "<br>FileName:".$row['filename'];
     echo "<br>";
     echo '<img src="data:image/jpeg;base64,'.base64_encode($row['dbforfile']).'"/>';
 }

推荐阅读