Estou começando a trabalhar com o serviço da Amazon, em que tenho um site que permite fazer upload de documentos. Queria saber se é possível converter um objeto do tipo S3ObjectInputStream para Objeto File, uma vez que preciso fazer a extração de texto de documentos digitalizados usando OCR asprise (por meio da função recognize() ) e a citada função só aceita objeto tipo File. Então como converter um objeto S3ObjectInputStream para Objeto Tipo File?
Pelo que vi no javadoc, essa classe S3ObjectInputStream herda de InputStream. Com isso, vc deve conseguir jogar os dados do arquivo num outputstream assim:
Então, o que acontece, eu precisaria de carregar o arquivo direto da minha aplicação, em que acesso o arquivo via getObjetct(bucket_name,key_name), que acaba retornando em um objeto S3OBjectInputStream. Pela sua resposta, primeiro cria-se uma instância carregando o arquivo de ujma pasta local e depois disso realiza-se a conversão?.Meu objeto é de passar esse objeto ou grava-lo em um aquivo do tipo File.
L
Lucas_Camara1 like
Esse getObject retorna uma instância de S3OBjectInputStream ? Então, ao fazer:
vc terá um inputstream com os dados nele. Com isso, vc conseguirá converter esse stream de dados para um objeto do tipo File (conforme exemplo que passei).
N
Nichollas2030
Ai no caso, não preciso de declarar uma instância de File?
L
Lucas_Camara1 like
Conforme exemplo que passei, sim (tinha esquecido de colocar e editei minha resposta =P).
N
Nichollas2030
Então, tentei isso e não tá dando muito certo…Tentei usar a função copyInputStreamToFile() para copiar o arquivo convertido para um arquivo temporário de forma a servir como entrada para a função recognize(), mas o que retorna no log da aplicação é o seguinte:
Para saber se o arquivo foi criado, vá nesse caminho: C:\Users\Nando\AppData\Local\Temp\temp8470746623956443139.tmp e veja se o arquivo está lah. Veja se o tamanho e/ou o conteúdo estão corretos.
N
Nichollas2030
foi criado sim com o nome temp8470746623956443139.tmp e o KB de memória
No log de erro, reparei que vc está tentando extrair alguma coisa de um arquivo chamado FGTS.pdf. Com isso, mudei para ele gravar os dados do arquivo vindo do fileS3 em um outro arquivo chamado teste-fgts.pdf.
N
Nichollas2030
então, eu iniciei fazendo dessa forma pra aprender a extrair o texto de um documento scaneado, lendo um arquivo da minha pasta local… acontece que tó trabalhando em uma aplicação web que tá rodando no servidor da Amazon, que puxa do banco de dados o documento ao fazer upload…e quando faço o upload, é retornado em um objeto S3OjectInputStream…
L
Lucas_Camara
Então esse fileS3 é resultado de um upload?
N
Nichollas2030
isso mesmo, ele que carrega o arquivo do servidor após a realização do upload
L
Lucas_Camara
Depois que o arquivo foi copiado para esse caminho: C:\Users\Nando\AppData\Local\Temp\temp8470746623956443139.tmp, vc consegue abrir ele e visualizar seu conteúdo?
N
Nichollas2030
consigo abrir com o sublime text, mas n possui nenhum conteúdo
L
Lucas_Camara
Então o arquivo não foi gravado corretamente. Qual valor é retornado se vc fizer: fileS3.available(); ?
I
Ino
Ola, eu to com um questão como eu faço para mostrar x ao quadrado na tela do jframe?
o irmão se você criar um postagem com esse tema vai ter muitas respostas
L
Lucas_Camara
Não é esse tipo de retorno. Rode o código em modo debug e veja qual o valor que é retornado pelo método fileS3.available();. O valor será um número inteiro (int). Se vc não souber rodar em modo debug, vc pode imprimir o valor assim: