[Resolvido] Download de arquivo temporário (VRaptor)

Boa tarde pessoal,

Preciso disponibilizar em um sistema, a opção de fazer o download de um relatório, até ai tranquilo, estou usando a classe Download do VRaptor e está funcionando legal.

A questão é a seguinte, os dados desse arquivo estão no banco de dados, esse arquivo não existe fisicamente.

Consigo fazer isso, sem precisar gerar o arquivo propriamente dito?

Pergunto isso, pois podem chegar a milhares de arquivos diários, e a criação deles para depois fazer o download seria algo bom de evitar.

Caso eu não consiga fugir disso, existe uma pasta “temp” no JBoss em que eu poderia criá-lo e “largar lá”, para que seja apagado automaticamente depois?

Aceito qualquer sugestão, só peço que levem em conta que a quantidade de arquivos por dia é grande, e eles não são pequenos.

Muito obrigado!

vc pode usar o InputStreamDownload… transforma o que veio do banco em um InputStream, daí vc não precisa criar o arquivo

Perfeito Lucas!

Para quem precisar, o código completo é:

	public InputStreamDownload download() {

            String conteudo = new String("Conteúdo\ndo\nArquivo!");

            byte[] conteudoBytes = conteudo.getBytes();
            
            ByteArrayInputStream conteudoStream = new ByteArrayInputStream(conteudoBytes);
            
            return new InputStreamDownload(conteudoStream, "text/plain", "Arquivo.txt", true, conteudoBytes.length);            
            
	}

Lucas, me tira uma última dúvida a respeito do InputStreamDownload, o atributo size está correto? É o length do array de bytes mesmo?

Muito obrigado cara!

isso mesmo

Valeuuu! Muito obrigado!