[RESOLVIDO] - Buscar PDF no banco de dados e mostrar numa blank

Boa noite pessoal.

Alguém sabe me dizer como eu busco um arquivo pdf no banco de dados e mostro numa aplicação blank ?

Tenho um formulário de cadastro de documentos, o campo que salva o arquivo é um Documento(Banco de Dados), o campo no banco de dados é um LONGBLOB, preciso buscar o pdf salvo no banco e mostrar ele num blank.

Alguma sugestão ???

Camila,
leia o registro e execute um fopen() com a opção w. o arquivo será salvo em disco, depois pode abrir via iframe em uma blank ou acessar diretamente via url.

Dessa forma eu já fiz, mas quero salvar no banco de dados e abrir um num blank, sem te que ser num iframe.

Sabes se tem como ?

Camila, seu primeiro post diz que o pdf já esta no banco de dados. você quer é extrair do banco e visualiza-lo??? correto?

para tal tem que gravar o arquivo em disco e acessar a url dele.

Abrir em uma blank sem ser iframe não sei.

Isso Haroldo, já está salvo no banco. APARENTEMENTE!
Mas como eu salvo em disco ? Você diz salvar numa pasta e acessar a pasta ?
É isso ?

Obrigada por responder uma hora dessas!

vc faz um sc_lookup na tabela que contem o registro.

sc_lookup(ds,“select mypdf from tabela where id=1”);
$fp = fopen(‘data.txt’, ‘w’);
fwrite($fp,$ds[0][0]);
Header(“location:arquivo.pdf”);

https://www.oficinadanet.com.br/artigo/1599/manipulacao_de_dados_blob_com_php_e_mysql

Haroldo, eu fiz assim:

sc_lookup(ds, “SELECT anexo FROM documentos WHERE id = 1”);
$fp = fopen(‘anexo.pdf’, ‘w’);
fwrite($fp, $ds[0][0]);
Header(“location:anexo.pdf”);

Mas no lugar do “anexo.pdf” vai o que ?

vamos melhorar isso um pouquinho.

sc_lookup(ds,"select mypdf from tabela where id=1");
$fp = fopen('data.txt', 'wb'); /// wb -> para escrever em binário
fwrite($fp,$ds[0][0]);
fclose($fp); // eu tinha esquecido de fechar, aqui o arquivo deve ser criado em disco
Header("location:arquivo.pdf"); aqui o arquivo é apenas carregado (se ele existir em disco)

se vc não conseguir tento criar algo na prática para exemplificar.

Boa noite Haroldo.
Não rolou aqui, talvez eu esteja fazendo algo errado.
Você já fez isso alguma vez ? Tem um código de exemplo ?

Obrigada!

Tenta assim:

header('content-type: application/pdf'); header('content-disposition: inline'); sc_lookup(ds,"SELECT arquivo FROM tabela " ); echo {ds[0][0]};

1 Curtida

Com PDF nunca fiz, mas já fiz com imagem.
Tenta a sugestão do Ronyan, se não funcionar nos avise.

Vou tentar na noite Ronyan, obrigada!

Olá, fiz um teste e funciona perfeitamente.

E se fosse uma imagem?

só trocar o cabeçalho html (content-type) para a extensão do arquivo a utilizar.

Grato, Haroldo.

Complementando o POST:

// QUALQUER IMAGEM A PARTIR DO BANCO DE DADOS (BLOB)
sc_lookup(ds,"SELECT arquivo FROM tabela " );
$Imagem_Banco={ds[0][0]};

//Number to Content Type
$Imagens_Tipo = Array( “1” => “image/gif”,
“2” => “image/jpeg”,
“3” => “image/png”,
“6” => “image/bmp”,
“17” => “image/ico”);

header('Content-type: ’ . $Imagens_Tipo[exif_imagetype($Imagem_Banco)]);
header(‘content-disposition: inline’);
echo $Imagem_Banco;

Show de bola, valeu Jailton.

Haroldo, consegui resolver. Obrigada!

O problema estava na forma em que eu estava salvando.

Resolvido pessoal, valeu pelas dicas!

Oi Camila boa tarde!

Me desculpe por revolver este tópico, é porque quero pegar o gancho na solução deste assunto.

Você conseguiu que o pedido de exibição do seu pdf a partir de uma aplicação (grid ou form) seja apresentado direto em uma aplicação BLANK ?

Se sim, saberias me ajudar a fazer o mesmo só que lendo o pdf direto de uma pasta, pois no meu caso o campo é Documento(Nome do arquivo) em vez de um BLOB como no seu caso.

Tentei usar esta solução mas quando a aplicação BLANK é carregada já vem exibindo uma mensagem de erro de “Falha ao carregar o documento PDF”.

O conteúdo da minha Aplicação BLANK está:

header(‘content-type: application/pdf’);
header(‘content-disposition: inline’);
$arquivo = “/Aplicacao/Arq_aplicacao/ARQUIVO DO ANEXO.pdf”;
readfile(’$arquivo’);

Agradeço qualquer ajuda.