Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 7 anos, 12 meses atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #108428
    Avatar de airoospairoosp
    Participante

      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

      #108429
      Avatar photoJosé Laurindo Chiappa
      Moderador

        Tudo 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

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.
      plugins premium WordPress