As vezes nem tudo é tão simples. No artigo anterior eu mostrei como pegar um arquivo com Java a partir de uma URL, porém na maioria das empresas para se ter acesso a internet é preciso usar um proxy devido a configurações de segurança e tal. Então para acessar arquivos de URLs sem usar proxy provavelmente só vai rolar se for de URLs internas da empresa. Mas calma, usar o proxy muda pouca coisa no nosso código e vou seguir com os mesmos exemplos. Como no artigo anterior isso pode ser aplicado a um PDF, uma imagem, etc. Vou mostrar uma forma apenas com Java puro e outra que usa o org.apache.commons.io.IOUtils para copiar do InputStream para o OutputStream.
No problema em questão a necessidade original era buscar um arquivo e retorná-lo em memória para um método que irá guardá-lo no banco de dados.
Segue o exemplo de código apenas com o Java puro:
URL url = new URL("http://www.pdf995.com/samples/pdf.pdf");
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[121072]; //quantidade de bytes lida por vez
int i = 0;
while (-1 != (i = in.read(buf))){
out.write(buf, 0, i);
}
out.close();
in.close();
byte[] dadosRecebidos = out.toByteArray();
File pdf = File.createTempFile("nomedoc", ".pdf"); //cria arquivo temporário
FileOutputStream fos = new FileOutputStream(pdf); // passa o arquivo para o fos
fos.write(dadosRecebidos); //escreve os dados no arquivo criado
fos.close();
return pdf;
} catch (Exception e) {
e.printStackTrace();
}
Segue o exemplo usando o apache commons:
URL url = new URL("http://www.pdf995.com/samples/pdf.pdf");
InputStream in = new BufferedInputStream(openConnection.getInputStream());
File pdf = File.createTempFile("nomedoc", ".pdf"); //cria arquivo temporário
FileOutputStream fos = new FileOutputStream(pdf); // passa o arquivo para o fos
IOUtils.copy(in, fos); // usando org.apache.commons.io.IOUtils para passar os dados para o arquivo
in.close();
fos.close();
return pdf;
} catch (Exception e) {
e.printStackTrace();
}
Para este artigo é isso. Se quiser saber como fazer sem o proxy está aqui o artigo:
Nenhum comentário:
Postar um comentário