Como mostrar uma imagem do tipo Long-Blob com php?

时间:2018-05-31 21:16:40

标签: php blob frontend

我无法显示保存到数据库中的图像,它的类型是Long-Blob。 我不知道我的错误在哪里,是在接受,还是从bd取回。

Inserction:

<body>
        <form action="#" method="post" enctype="multipart/form-data">
            <p>Nome do Produto:</p>
            <input type="text" name="nomeProduto" placeholder="Digite o nome do produto" autofocus>
            <p>Preco do Produto:</p>
            <input type="number" name="precoProduto" placeholder="Digite o preco do produto" >
            <p>Imagem do Produto:</p>
            <input type="file" name="imagemProduto">
            <p>Descricao do Produto:</p>
            <input type="text" name="descricaoProduto" placeholder="Digite a descricao do produto">
            <p></p>
            <input type="submit" name="submit" placeholder="Enviar">
        </form> 
    </body>

    <?php

        require 'conexao.php';
        if(isset($_POST['submit'])) {
            $foto = $_FILES['imagemProduto'];
            $nomeFinal = time().'.jpg';
                if (move_uploaded_file($foto['tmp_name'], $nomeFinal)) {
                    $tamanhoImg = filesize($nomeFinal); 
                    $mysqlImg = addslashes(fread(fopen($nomeFinal, "r"), $tamanhoImg)); 
                    dbInsertProduto ($_POST['nomeProduto'], $_POST['precoProduto'], $mysqlImg, $_POST['descricaoProduto']);
                }


        }


    ?>

获得:

<?php
            $conn = dbConectar();
            $catalogo = mysqli_query($conn, "SELECT * from produtos");

            while ($linha = mysqli_fetch_object($catalogo)) { 
                header('Content-Type: jpg');
                //echo "<img src='getImagem.php?PicNum=$linha->imagem' \">";   
                //$image = base64_decode($linha->imagem);
                echo $linha->imagem;
            } 

        ?>

dbInsertProduto代码:

function dbInsertProduto ($nome, $preco, $imagem, $descricao) {
    $sql = "INSERT into produtos (nome, preco, imagem, descricao) VALUES ('$nome', '$preco',' $imagem', '$descricao')";
    $resultado = dbExecutar($sql);
    return $resultado;
}

要插入的db :( tabela produtos)https://i.stack.imgur.com/l2D6U.png

我得到的结果: https://i.stack.imgur.com/jDv7h.png

1 个答案:

答案 0 :(得分:-1)

您需要使用HTML的IMG标记来显示此内容。

例如:

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

要使其在您的代码中运行,您需要替换以下代码

        while ($linha = mysqli_fetch_object($catalogo)) { 
            header('Content-Type: jpg');
            //echo "<img src='getImagem.php?PicNum=$linha->imagem' \">";  Não funciona 
            //$image = base64_decode($linha->imagem); echo $image tbm não
            echo $linha->imagem;
        }

        while ($linha = mysqli_fetch_object($catalogo)) { 
            echo '<img src="data:image/jpeg;base64,'.base64_encode($linha->imagem).'">';
        }

注意

确保将image/jpeg;附近的mime类型更改为相应的mime类型。 例如,如果png文件然后更改为image/png;

提示

将图像作为blob保存到数据库中时,您可能还需要存储mime类型。