从mysql显示图像

时间:2015-08-13 16:16:56

标签: php mysql

我尝试将mysql数据库中的图像显示到我的php网站但是图像没有显示,只显示图像描述。请帮助我的代码为什么没有正确显示图像。下面是我用于将图像保存到具有blob数据类型的数据库的脚本。

*<?php
    $image = $_POST['images']['tmp_name'];

    $sql = mysql_query("INSERT INTO product(image) VALUES('$image')");
    if($sql){
    echo "Product Registration Successful";
    }
    else{
         echo "Product Registration Failed";
         }
?>*

以下是我用来在网站上显示图片的脚本:

  *<?php

    $sql = mysql_query("SELECT * FROM product");
    while ($tampil = mysql_fetch_array($sql)) {
    ?>
    <tr>

        <td class="img-thumbnail"><?php echo '<img src="data:image/jpeg;base64,'.base64_encode( $tampil['image'] ).'"/>'; ?></td>
</tr>
 <?php  
}
?>*

2 个答案:

答案 0 :(得分:3)

您没有将图像内容保存到PHP中的数据库,只保存临时名称。

您可以使用以下代码解决此问题:

<?php
$image = file_get_contents($_FILES['images']['tmp_name']);
$image = base64_encode($image);

$sql = mysql_query("INSERT INTO product(image) VALUES('".$image."')");
if ($sql) {
    echo "Product Registration Successful";
} else {
    echo "Product Registration Failed";
}
?>

答案 1 :(得分:2)

解决方案:move_uploaded_file()

$image['name']['tmp_name']是一个临时位置,用于存储一段时间后删除的内容,实际上,将您必须使用的图像move_uploaded_file()存储到另一个文件夹。这应该在验证图像后完成。

解决方案:Base64_incode()

如果您只想使用base64值,则必须将图像信息存储在数据库中,在这种情况下,您不需要移动文件

$image = imagecreatefromstring($file);
ob_start();
imagepng($image);
$contents =  ob_get_contents();
ob_end_clean();

现在,将$contents存储在您的数据库中。