Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

albertojr.1

Salva e recuperar imagens diredo no banco de dados com PDO e Mysql

Recommended Posts

Pessoal estou com o seguinte problema, tenho que guardar e recuperar imagens diretamente no banco de dados utilizando PDO e Mysql, está salvando entretanto não sei se o arquivo está sendo salvo corretamente ou se não estou conseguindo fazer o download(ou mostrar imagens no navegador) do mesmo.

 

Arquivo upload.php(faz a entrada da imagem e ao mesmo tempo já chama ela no banco de dados)

<?php
	require_once 'tb_arquivo.php'; 
?>

<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title></title>
	<link rel="stylesheet" href="">
</head>
<body>

	<form method="post" enctype="multipart/form-data">
		<p><input type="file" name="arquivo" required>*</p>
		<input type="submit" placeholder="" name="cadastrar">
	</form>

	<?php 

		$tb_arquivo = new tb_arquivo();

		if(isset($_POST['cadastrar'])){
			$arquivo = fopen($_FILES['arquivo']['tmp_name'], 'rb');
			$nome = basename($_FILES['arquivo']['name']);
			$tipo = $_FILES['arquivo']['type'];
			

			$tb_arquivo->setNome($nome);
			$tb_arquivo->setTipo($tipo);
			$tb_arquivo->setArquivo($arquivo);

			if ($tb_arquivo->insert()) {
		    echo  '<script> alert("Formulário enviado com sucesso!");</script> ';
			}else echo  '<script> alert("Erro ao enviar Formulário!");</script> ';

		}

		$tb_arquivo->find();
		
	?>

</body>
</html>

Arquivo tb_arquivo.php(contém o método de inserção no banco)

<?php

require_once 'crud.php';

Class tb_arquivo extends Crud{

	protected $table = 'tb_arquivo';

	private $nome;
	private $tipo;
    private $arquivo;
    
    public function setNome($nome){
        $this->nome=$nome;
    }
    
    public function setTipo($tipo){
        $this->tipo=$tipo;
    }

    public function setArquivo($arquivo){
        $this->arquivo=$arquivo;
    }


    public function insert() {
        $sql = "INSERT INTO $this->table (nome, tipo, arquivo) VALUES (:nome, :tipo, :arquivo);";
        $stmt = DB::prepare($sql);
        $stmt->bindParam(':nome', $this->nome);
        $stmt->bindParam(':tipo', $this->tipo);
        $stmt->bindParam(':arquivo', $this->arquivo, PDO::PARAM_LOB);
        return $stmt->execute();
    }

}    

    

Arquivo Crud.php(contém método de chamada de arquivo atravez do find() e faz conexão com o banco de dados, )OBS: O parâmetro de chamada id está sendo especificado para 3 para chamar determinado arquivo com id =3

<?php

require_once 'db.php';

abstract class Crud extends DB{
    protected $table;
    
    abstract public function insert();
        
    public function find(){
        $sql = "SELECT * FROM $this->table WHERE id = ?";
        $stmt = DB::prepare($sql);
        $stmt->execute(array(3));
        $stmt->bindColumn(1, $nome, PDO::PARAM_STR);
        $stmt->bindColumn(2, $tipo, PDO::PARAM_STR);
        $stmt->bindColumn(3, $arquivo, PDO::PARAM_LOB);
        $stmt->fetch(PDO::FETCH_BOUND);

        header("Content-Type: ".$tipo);
        echo ($arquivo);
        
    }
    
    public function findAll(){
        $sql = "SELECT * FROM $this->table";
        $stmt = DB::prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll();
    }
    
    public function delete($id){
        $sql = "DELETE FROM $this->table WHERE id = :id";
        $stmt = DB::prepare($sql);
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        $stmt->execute();
    }
}

Arquivo DB.php(faz a conexao com o banco de dados)

 <?php
 
 require_once 'conexao.php';
 
 class DB{
        private static $instance;

        public static function getInstance(){
		
		if(!isset(self::$instance)){
				
			try{
                                                    self::$instance = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS);
                                                    self::$instance -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                                                    self::$instance -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
			}catch(PDOException $e){
                                echo $e ->getMessage();
                            }
		}
                return self::$instance;
	}
        public static function  prepare($sql){
            return self::getInstance() -> prepare($sql);
        }
 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.