Feliciano Rodrigues Ferreira
Armazenar Pdf No Postgresql Via Php
22 de November de 2017 às 09:58AM
Senhores, boa tarde.

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 do Banco entre outros, portanto, não precisa responder apenas que não é uma boa prática, preciso de uma solução e agradeço a todos pela colaboração...



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, tanto no php como no html

<?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...
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.