上传到数据库,PHP和Mysql后不能显示图像


Can't display image after uploading it to a data base, PHP and Mysql

我需要为客户做一个网页,将图像上传到数据库并显示它们。

我实现了将图像上传到数据库,但我有麻烦显示它们,但我不知道为什么

下面是我的代码:
<!DOCTYPE html>
    <head>
    <body>
    <form action="form.php" method="post" enctype="multipart/form-data">
        File:
        <input type="file" name="image" /> <input type="submit" value="Upload" />
    </form>
    <?php 
        mysql_connect("localhost", "root", "") or die(mysql_error());
        mysql_select_db("test" ) or die(mysql_error());
        $file = $_FILES['image'] ['tmp_name'];
        if (!isset($file)) {
            echo "<br>Please select an image.";
        }
        else {
            $image = addslashes(file_get_contents($_FILES['image'] ['tmp_name']));
            $imageName = addslashes($_FILES['image']['name']);
            $imageSize = getimagesize($_FILES['image']['tmp_name']);
            if ($imageSize == FALSE)
                echo "<br><br>Thats not an image. <br><br>";

            else{
                if (!$insert = mysql_query("INSERT INTO imgup VALUES ('','$imageName','$image')"))
                    echo "Problem uploading the image.";
                else{
                    $lastId = mysql_insert_id();
                    echo "Article uploaded.<p /> Your image:<p /> <img src=get.php?id=$lastId>";
                }
            }
        }
        ?>
    </body>
</html>

这是我的文件谁把图像blob变成一个图像:

<?php 
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("test" ) or die(mysql_error());
        $id = addslashes($_REQUEST['id']);

        $image = mysql_query("SELECT * FROM blog WHERE id=$id");
        $image = mysql_fetch_assoc($image);
        $image = $image['image'];
        header("Content-type: image/jpeg");
        echo $image;
?>

最后,图像没有显示,这就是我得到的:http://goo.gl/gi1Uuc

如果我去检查我的数据库,图像已经成功上传…

根据文件使用内联base64编码。使用:

echo '<img src="data:image/jpeg;base64,'.base64_encode( $image ).'"/>';

字体:base64_encode

T大写(Type),因为在IE中会出现错误。尝试使用file_get_contents函数打印。

header('Content-Type: image/jpeg');
echo readfile($image);

我不会在数据库中存储任何图像。您应该将其保存为文件,并将文件名存储在数据库中。然后,您可以配置从哪个目录提供映像,而不必担心映像的完整路径,或者在db中存储二进制数据(呸)。

尝试更改:

$image = mysql_query("SELECT * FROM blog WHERE id=$id");

:

$image = mysql_query("SELECT * FROM blog WHERE id = '$id'");

addslashes转义图像文件可能会损坏它,imagesize测试应该足够