Ir para conteúdo

POWERED BY:

Arquivado

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

Patricio

Oracle 9i exibir dados campo blob

Recommended Posts

A Situação é a seguinte. Tenho um projeto que quer cadastrar documentos armazenando o arquivo, do tipo pdf e doc, num campo blob do banco oracle 9i. Mas além disso a proposta tem a intenção de recuperar esses documentos armazenados no banco e que estão em binário e apresentar para o usuario. Esta se usando php e oracle 9i.

 

Primeiro é feito um upload do arquivo para uma pasta no diretório c:temp

Abaixo mostro o cabeçalho usado....

><html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii\n";><meta name="GENERATOR" content="Quanta Plus"></head><form name='frm_files' method="POST" enctype="multipart/form-data" action="DocumentoInclui_db.php" ><center><table border="0"><TABLE BORDER=0 CELLSPACING=2 CELLPADDING=5 BGCOLOR=="#FFF0FF,"><TR><TH COLSPAN=2> Cadastros de Documento </TH></TR></table><br><?
O código abaixo mostra o momento que o arquivo é passado e armazenado no C:/temp. onde $doc_name é o documento em questão.

 //RECEBE OS DADOS DO CAMPO $_FILES//NOME TEMPORÁRIO NO SERVIDOR$doc_temp = $HTTP_POST_FILES["Anexar"]["tmp_name"];//NOME DO ARQUIVO NA MÁQUINA DO USUÁRIO$doc_name = $HTTP_POST_FILES["Anexar"]["name"];//TAMANHO DO ARQUIVO$doc_size = $HTTP_POST_FILES["Anexar"]["size"];//TIPO MIME DO ARQUIVO$doc_type = $HTTP_POST_FILES["Anexar"]["type"];//ENVIA O ARQUIVO PARA A PASTAchmod('C:\temp\ ', 0777);@move_uploaded_file ($doc_temp, "C:\\temp\ $doc_name");

Com o arquivo armazenado no diretório o procedimento criado no sql é usado para armazenar na tabela.

 

$clob = OCINewDescriptor($db, OCI_D_LOB);       $stmt = OCIParse($db, "begin insert_doc_blob($cod_doc_arm,$cod_doc_arm,'TEMP',' $doc_name');end;");       OCIExecute($stmt, OCI_DEFAULT);

abaixo o procedimento já mostrado anteriormente :

 

 

 

create or replace procedure insert_arq_lob ( Diretorio varchar2, arquivo varchar2) is V_ARQUIVO bfile; V_CAMPO_LOB blob; V_TAM_ARQUIVO integer; begin V_ARQUIVO:=bfilename(Diretorio,Arquivo); dbms_lob.fileopen ( V_ARQUIVO, dbms_lob.file_readonly ); V_TAM_ARQUIVO:=dbms_lob.getlength(V_ARQUIVO); insert into docs values (arquivo,empty_blob) returning doc into V_CAMPO_LOB; dbms_lob.loadfromfile(V_CAMPO_LOB,V_ARQUIVO,V_TAM_ARQUIVO); dbms_lob.fileclose(V_ARQUIVO); commit; end;

Agora o problema está na hora de retornar o arquivo do banco, como sei o sql não retorna o arquivo binário e não sei como tratar esso no php......... então aí esta o problema.

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.