- This topic has 1 reply, 2 voices, and was last updated 8 years, 1 month ago by José Laurindo Chiappa.
-
AuthorPosts
-
27 de setembro de 2016 at 10:05 pm #108428airoospParticipant
Boa tarde,
Pesquisando sobre o uso do campo tipo blob para armazenar imagens, pdf, txt vi é que possível executar o processo através da utl_file. O detalhe é que através do utl_file só podemos utilizar um diretório que esteja no servidor do banco.
Para que seja feito o upload ou download usando uma pasta informada pelo usuário, é possível? Como devo proceder? Alguém tem algum exemplo ou dica?
Oracle 10g com Windows.
Obrigado.
Airton
27 de setembro de 2016 at 11:15 pm #108429José Laurindo ChiappaModeratorTudo jóia ? Então, o RDBMS (Obviamente) só conhece/sabe localizar diretórios/pastas ** LOCAIS ** no servidor onde ele roda – com ABSOLUTA CERTEZA ele Não tem nenhum “superpoder” para sair abrindo conexões via internet ou coisa assim, nem para criar do nada link de rede entre uma máquina externa e o servidor Oracle…
Assim sendo, vc tem DUAS possibilidades para que um arquivo externo possa ser inserido numa coluna BLOB de uma tabela que está no database :a) você TRANSFERE pela rede o arquivo da máquina onde ele está para um diretório/pasta local do servidor Oracle – isso pode ser feito via FTP, SCP, NFS ou outras opções (como por exemplo e-mail, digamos) mas *** NECESSARIAMENTE ** alguém TEM que abrir portas de firewall, TEM que instalar e configurar serviço de nfs/ftp/scp/whatever, TEM que haver um servidor de email acessível se for fazer via email, TEM que instalar e fazer o setup de algum tipo de VPN ou similar que estabeleça uma Rota de Rede se ambas as máquinas não estão na mesma rede…. Ao contrário do que se acredita, o software de RDBMS Oracle, repito , Não Tem poder pra fazer nada disso por si só, ele Não é ‘administrador de rede’, ele é apenas um CONSUMIDOR dos recursos de rede….
Uma vez transferido pra um local do servidor Oracle, vc usa a solução do UTL_FILE…OU
b) numa variação do item acima, se o sua aplicação é web/N-tier, certamente vc tem um webserver/appserver no meio : se vc fazer a aplicação transferir o tal arquivo prum diretório/pasta desse webserver/appserver, via de regra é Simples pro seu Administrador de redes fazer o servidor Oracle enxergar essa pasta/diretório como se fosse local (normalmente via NFS), pois tipicamente esse webserver/appserver E o servidor Oracle já estão na mesma rede…
Uma vez transferido pra esse diretório do webserver/appserver que o servidor Oracle enxerga como se fosse local, aí vc usa a solução do UTL_FILE…OU
c) se a sua Aplicação tem a capacidade de ler o arquivo lá na máquina-origem dele E também pode conectar no banco de dados, vc pode programar para que a sua Aplicação leia o tal arquivo (pra memória, digamos) e grave os bytes lidos no banco de dados : http://www.srikanthtechnologies.com/blog/java/fileupload.aspx tem um exemplo mais ou menos de como se faz na linguagem java, http://www.apexninjas.com/blog/2011/09/uploading-and-displaying-images-in-apex/ fala sobre como se faz usando APEX, e por aí vai….
O ponto aqui é que vc VAI estar programando, é VOCÊ que tem que criar o código Todinho necessário para isso – se vc optar por isto, FATALMENTE o ‘como fazer’ vai Depender da linguagem/tool de programação que vc está usando, do seu ambiente E da sua proficiência/conhecimento….[]s
Chiappa
-
AuthorPosts
- You must be logged in to reply to this topic.