如何在php中将BLOB变量显示为图片

时间:2014-10-12 21:50:04

标签: php mysql

我需要帮助解决这个问题。我已将我的图片存储为mysql数据库中的blob,当我尝试运行此代码以从数据库中检索数据时,图片显示为字符串,但其余数据类型工作正常。我认为浏览器不知道数据是图片。如何在此代码中将blob转换为图片。

<?php
    include_once('db.php');

    if(isset($_POST['personID'], $_POST['fName'], $_POST['lName'], $_POST['title'], $_POST['pic']))
    {
      $personID= $_POST['personID'];
      $fName= $_POST['fName'];
      $lName= $_POST['lName'];
      $title= $_POST['title'];
      $pic= $_POST['pic'];

      if(mysql_query("INSERT INTO samidb.persons VALUES ('$personID','$fName', '$lName', '$title',     '$pic')"))
        echo "Successful Insertion!";
      else
        echo "Please try again";
    }


$res = mysql_query("SELECT * FROM samidb.persons");

?>
<html>
<head>

<style type="text/css">
 li { list-style-type: none; display: inline-block; padding: 10px; text-align: center;}
//li:hover { background-color: yellow; }
</style>
</head>
<body>
<form action="." method="POST">
person ID: <input type="text" name="personID"/><br />
First Name: <input type="text" name="fName"/><br />
Last Name: <input type="text" name="lName"/><br />
title: <input type="text" name="title"/><br />
pic: <input type="image" name="pic"/><br />
<input type="submit" value=" Enter "/>
</form>

<h1>List from database ..</h1>
<ul>
<?php
    while( $row = mysql_fetch_array($res) )
    echo "<li>$row[personID]. <li>$row[fName]  <li>$row[pic]</li> 
            <li><a href='edit.php?edit=$row[personID]'>edit</a></li>
            <li><a href='delete.php?del=$row[personID]'>delete</a></li><br />";
?>
</ul>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

大多数人只是存储图像的路径。它很简单,它将数据保存在文件系统中,为这类事物构建,减少数据库大小等。

但是,你应该能够将它用作内联图像,通常是64位编码,如下所述:

Embedding Base64 Images

仅供参考,我使用此代码对此进行了测试:

<img src="data:image/png;base64,<?php echo base64_encode (file_get_contents('./screenshot.png')); ?>" />

您可以执行以下操作:

<img src="data:image/png;base64,<?php echo base64_encode ($row['pic']); ?>" />