Комо Мострар Ума imagem сделать типо Лонг-Blob Com php? - PullRequest
0 голосов
/ 01 июня 2018

Я не могу показать изображение, которое я сохранил в своей базе данных, это тип Long-Blob.Я не знаю, где моя ошибка, если она находится при вставке или при возврате с бд.

Вставка:

<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 code:

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

дБ, которые я хочу вставить: (tabela produtos) https://i.stack.imgur.com/l2D6U.png

полученный результат: https://i.stack.imgur.com/jDv7h.png

1 Ответ

0 голосов
/ 01 июня 2018

Вы должны отобразить это с помощью IMG тега HTML.

Например:

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;
        }

Into

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

ПРИМЕЧАНИЕ :

Обязательно измените тип пантомимы рядом с image/jpeg; на соответствующий.Например, если файл PNG затем изменить на image/png; и т. Д.


Совет

При сохранении изображения в виде BLOB-объекта в базе данных, вам может потребоваться сохранить MIME-тип тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...