Jump to content
rodriguesrj

Armazenar PDF no PostgreSQL via PHP

Recommended Posts

Senhores, boa noite.

Estou iniciando na linguagem PHP. Preciso desenvolver uma pequena aplicação que guarde no banco de dados PostgreSQL arquivos em PDF. Depois da inserção, realizar a consulta.

 

Informações:

1. O Campo que receberá o arquivo PDF no Postgresql tem que ser do tipo Bytea;

2. Meu sistema operacional é Windows 10;

3. Meu PostgreSQl é o 9.6, pgadmin 4;

4. Como servidor, utilizo o WampServer; e

5. A inserção até funciona, pelo menos quando consulto no Postgres aparece o nome do arquivo na base de dados, mas para realmente saber se ele está lá, preciso consultá-lo, mas não consigo fazer a consulta.

 

ATENÇÃO: SEI QUE NÃO É A MELHOR PRÁTICA, SALVAR ARQUIVOS NO BD, QUE O MELHOR A FAZER ERA SALVAR O CAMINHO E GUARDAR OS ARQUIVOS EM DIRETÓRIOS, PORÉM O SISTEMA NÃO É GIGANTE E OS ARQUIVOS SÃO PEQUENOS, POR ISSO, NÃO TEREI PROBLEMAS COM DESEMPENHO ENTRE OUTROS, PORTANTO, NÃO PRECISEM RESPONDER APENAS QUE NÃO É BOA PRÁTICA RS.

 

Seguem meus códigos:

 

Tenho no Banco de Dados a seguinte estrutura: (É apenas um ambiente de testes, os campos reais serão diferentes)

 

BD_Revista

Tabela tb102_documento

colunas: 

documentoid serial

revistaid integer

codsecao character(2)

documento bytea

 

 

formulario.html

 

<HTML>
<HEAD>
<TITLE>Formulário de Cadastro</TITLE>
</HEAD>
<BODY>
<center>
     <form name = "frmCadastro" method="POST" action = "cadastrar.php">
           Documento:<input type="text" size="20" name = "documentoid"><BR>
           Revista:  <input type="text" size="20" name = "revistaid"><BR>
           Codigo da Seção:<input type="text" size="20" name = "codsecao"><BR>
           Documento:  <input type="file" name = "documento"><BR>
           
           
           <input type="submit" value="Gravar">
     </form>
<center>
</BODY>
</HTML> 

 

cadastrar.php

<?php
     //Verifica se existe o arquivo executa.php para poder incluí-lo
     if (file_exists("executa.php")){
         include("executa.php");
     }
     if (!file_exists("executa.php")){
        $msgErro = "<center><font color='#FF0000'><b>";
        $msgErro .= "Não será possível executar nenhuma ação no Banco de Dados!<br>";
        $msgErro .= "Porque não existe o arquivo 'executa.php'.";
        $msgErro .= "</b></font></center>";
        echo "<br><br>";
        echo $msgErro;
        echo "<br>";
        exit;
     }
     //recebendo os dados do formulário
     $documentoid = $_POST['documentoid'];
     $revistaid = $_POST['revistaid'];     
     $codsecao = $_POST['codsecao'];
     $documento = $_POST['documento'];    
     //if ($revistaid == ""){
     //   echo "<center>O codigo id da revista deve ser informado!</center>";
     //   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
     //}
     //if ($nroano == ""){
     //   echo "<center>O ano deve ser informado!</center>";
     //   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
     //}
     //Montando a String de SQL
     $Sql = "Insert into tb102_documento(documentoid, revistaid, codsecao, documento) values('$documentoid', '$revistaid', '$codsecao', '$documento')";
     //Chamando a função, e passando como parâmetro a String de SQL
     $Resultado = executa($Sql);
     if ($Resultado){
        echo "<center>Cadastro efetuado com sucesso!</center>";
        echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
     }
?> 

 

executa.php

<?php
     function executa($Sql){
             //Testando se existe o arquivo
             if (file_exists("conecta.php")){
                 include("conecta.php");
              }
              if (!file_exists("conecta.php")){
                 $msgErro = "<center><font color='#FF0000'><b>";
                 $msgErro .= "Não foi possível conectar ao banco de Dados<br>";
                 $msgErro .= "Porque não existe o arquivo 'conecta.php'.";
                 $msgErro .= "</b></font></center>";
                 echo "<br><br>";
                 echo $msgErro;
                 exit;
              }
              $Resultado = pg_query($conectabd,$Sql);
              pg_close($conectabd);
              return $Resultado;
     }
?> 

 

conecta.php

 

<?php
     $conectabd = pg_connect("dbname = BD_Revista port = 5432 host = localhost user = postgres password = 159-*/rpg");
    
    

     if ($conectabd) {
        //Caso queira Imprimir na Tela a mensagem, retirar o comentário
        echo "Conectado com: " . pg_host($conectabd) . "<br/> ";
     }
     else {
          echo pg_last_error($conectabd);
          exit;
     }
?> 

 

formconsulta.html

 

<HTML>
<HEAD>
<TITLE>Formulário de Cadastro</TITLE>
</HEAD>
<BODY>
<center>
     <form name = "frmConsulta" method="POST" action = "consultar.php">
           Documento:<input type="text" size="20" name = "documentoid"><BR>
           Revista:  <input type="text" size="20" name = "revistaid"><BR>
           Codigo da Seção:<input type="text" size="20" name = "codsecao"><BR>
           Documento:  <input type="text" name = "documento"><BR>
           
           
           <input type="submit" value="Pesquisar">
     </form>
<center>
</BODY>
</HTML> 

 

consultar.php -> este arquivo está errado, preciso de uma LUZ exatamente na parte da consulta

 

<?php
    $varSQL = "select documentoid, revistaid, codsecao, documento from tb102_documento";
    $varConexao = pg_connect("dbname = BD_Revista port = 5432 host = localhost user = postgres password = 159-*/rpg");
    $varResultado = pg_query($varConexao,$varSQL);
//        $varObjeto = pg_fetch_object ($varResultado,0);        
    if ( $varResultado )
    {
        while ( $varLinha =  pg_fetch_array($varResultado) )
        {
            $varConteudo = base64_decode("'".$varLinha[1]."'");
            $varArquivo = fopen($varLinha[0],"w");
            fwrite($varArquivo,$varConteudo);
            fclose($varArquivo);        
            echo  " <tr> " . 
                  "  <td width='50%'>" . $varLinha[0] . "</td>" .
                  "  <td width='50%'><img src='" . $varLinha[0] ."'></td>"  .
                  " </tr> ";
        }
    }
    else
    {
        //echo "Erro na leitura<br>";
    }  
  ?>

 

Desde já eu agradeço a colaboração de todos...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Chester1
      oi, eu to tentando mexer com servidores agora no PHP e esta dando um erro muito estranho que quando eu procuro em um programa que acha erros de sintaxe ele me diz que o erro esta no </HTML>    se alguem puder me dizer qual foi o erro que eu cometi eu agradeceria
       

       
      <HTML> <HEAD><TITLE>incluindo no banco de dados</TITLE></HEAD> <body> <BODY bgcolor="#d0d0d0"> <center> <h3>Lanchonete coma bem (voltada para o internauta)</h3> <h1>24horas</h1> <?php $login_digitado=$_POST['login']; $senha=$_POST['senha']; $nome=$_POST['nome']; $email=$_POST['email']; $telefone=$_POST['telefone']; $celular=$_POST['celular']; $endereco=$_POST['endereco']; $complemento=$_POST['complemento']; if ($login_digitado == "" || $senha == "" || $nome =="" || $email == "" || $telefone == "" || $endereco == "" || $complemento == "") { echo "existem(m) campos(s) de preenchimento obrigatorio em branco,<BR> infelizmente tera que voltar para preenche-lo(s)."; echo "<BR><a href=\"cadastro.php\">clique aqui para tentar novamente</a>"; } else { { $link=mysql_connect("localhost", "root", "") or die ("<h1>nao foi possivel conectar !!!</h1> ".mysql_error());  
      obs :estou trabalhando com formularios e servidores
         
         
         
         
      ?>
      </BODY>
      </HTML>
    • By DavidPin94
      Boa tarde, estou tentando criar uma validação para saber se o usuário já está cadastrado no meu banco de dados para meu sistema ficar mais organizado, porém quando realizo o teste cadastrando um usuário já cadastrado, o cadastro ocorre sendo que não era para ocorrer
      <?php require_once("conexao.php");?> <?php if (isset($_POST['usuario'])) { $nome = utf8_decode($_POST['usuario']); $senha = utf8_decode($_POST['senha']); $inserir = "INSERT INTO cadastro "; $inserir .= "(usuario, senha) "; $inserir .= "VALUES "; $inserir .= "('$nome', '$senha')"; $query = "SELECT usuario FROM cadastro WHERE usuario = '$usuario' LIMIT 1"; $consulta = mysqli_query($conecta, $query); $query = "SELECT usuario FROM clientes WHERE usuario = '$usuario' LIMIT 1"; $consulta = mysqli_query($conecta, $query); if (mysqli_num_rows($consulta) < 1) { $operacao_inserir = mysqli_query($conecta, $inserir); if (! $operacao_inserir) { die("Erro no banco"); }else header("location: login.php"); }else{ die("Usuário existente!"); } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Cadastrar novo usuário</title> <link rel="stylesheet" type="text/css" href="estilo.css"> </head> <body> <nav> <ul> <li><a href="inicial.php">PÁGINA INICIAL</a></li> <li><a href="quem_somos.php">QUEM SOMOS</a></li> </ul> </nav> <div id="cadastro"> <form method="post" action="cadastro.php"> <label>Digite seu nome de usuário</label> <input type="text" name="usuario" placeholder="Ex: Usuario123" required size="50" minlength="5" maxlength="20" autofocus><br> <label>Digite sua senha</label> <input type="password" name="senha" placeholder="Deve conter mais de 5 caracteres" required size="50" minlength="5" maxlength="20" autofocus><br> <input type="submit" value="Cadastrar" id="enviar" name="enviar"> </form> </div> </body> </html> ,  alguém poderia me ajudar?  Meu código:
    • By asacap1000
      Galera me ajudem por favor, estou pirando kkkkk
       
      Seguinte, tenho um form que realiza o submit via javascrit enviando os dados para uma página php formatada em json.
      Está gravando perfeitamente porém preciso dos dados do retorno, como Link do boleto, e alguns outros resultados para inserir no banco nesse ponto já pesquisei um monte testei de tudo até a página bugar e nada kkkk
       
      o Script que utilizo para o envio é esse:
       
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $("#frmBoleto").submit(function(){ $.ajax({ type: "POST", url: "https://www.sitedaloja.com.br/action/boleto_bradesco/gerando_boleto.php", data: $(this).serializeArray(), }).done(function( msg ) { }); return false; }); </script> Como fazer para capturar os dados  da resposta do json?  
    • By Sapinn
      Salve salve! Nuca intendi como isso realmente funciona por isso gostaria da ajuda de vcs. Estou desenvolvendo um sistema de historias e acho que seria interessante no envio dessas historia além dos texto imagem ilustrativas, mais ou menos como blogs de noticias fazem, mas como posso enviar texto e imagem e depois retorna-los juntos? Eu sei com enviar imagens em php mas gostaria de enviar a imagem e o texto colocando ambos em um textarea acho que assim ficaria bem mais interessante alguém pode me ajuda?
       
    • By manoaj
      Boa noite pessoal!
      Alguém ai entente dos checkouts do Mercado Pago pra me explicar como eu obtenho os dados da preferência criada através da url disponível na API
      https://api.mercadopago.com/checkout/preferences/:id?access_token=ACCESS_TOKEN_ENV  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.