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

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.

Veja neste exemplo:

header(‘Content-type: application/pdf’);
header(‘Content-Disposition: attachment; filename="’. $cT_PDFNOMARQ .’"’); // só o nome do arquivo
readfile( $cT_PDFDIRARQ ); // diretório + nome do arquivo ( arquivo com o caminho absoluto )

No seu readfile() você colocou a variável com aspas.

Um outro exemplo:

header(‘Content-Description: File Transfer’);
header(‘Content-Disposition: attachment; filename="’. $cT_PDFNOMARQ .’"’); // só o nome do seu arquivo pdf
header(‘Content-Type: application/force-download’); // Opção para Abrir / Download
header(‘Content-Transfer-Encoding: binary’);
header('Content-Length: ’ . filesize( $cT_PDFNOMARQ ));
header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0’);
header(‘Pragma: public’);
header(‘Expires: 0’);

ob_end_clean();
flush();

readfile( $cT_PDFDIRARQ ); // diretório completo + nome do arquivo pdf

Caro Jocimar, bom dia!

Grato pela excelente ajuda, tomara possa ajudar mais usuários.

Vou imediatamente usar as soluções apresentadas.

[]

Bom dia!
Estou testando esta solução porem não está documento o documento corretamente.

O arquivo está retornando com tamanho de 15Bytes com o conteúdo Resource id #38
Tem alguma implementação a fazer no código que passou?

tipo do campo: bytea

Treicho dos dados do campo: "%PDF-1.5\012%\342\343\317\323\0126 0 obj\012<< \012 /Type /XObject\012 /Subtype /Image\012 /BitsPerComponent 8\012 /Width 600\012 /Height 565\012 /ColorSpace /DeviceRGB\012 /Filter /DCTDecode\012 /Length 41609\012>>\012stream\012\377\330\37 (…)