VRaptor 3 - Download File

Opa,
Galera, preciso converter um byte[] em File para utilizar o método de Download do VRaptor.

Explicando meu caso.
Tenho uma tabela que armazena PDF´s em uma coluna bytea do Postgres. O que eu preciso agora é disponibilizar o download disso.
Encontrei na documentação do VRaptor um exemplo de como fazer isso com um File, mas não estou conseguindo converter diretamente meus bytes para File.
Eu poderia escrever o arquivo no disco e daí disponibilizar, mas acho que essa não seria a melhor maneira.

Alguém já precisou fazer algo parecido?

[]´s
Daniel

Olá!
Veja se ajuda:
http://www.guj.com.br/posts/list/95019.java
http://www.guj.com.br/posts/list/81261.java
Abraço!

Então, mas nesses casos o arquivo é escrito em disco.
Eu gostaria apenas de converter os bytes para enviar para o usuário.

Algo como o método da documentação:

public Download foto(Perfil perfil) {
     File file = new File("/path/para/a/foto." + perfil.getId()+ ".jpg");
     String contentType = "image/jpg";
     String filename = perfil.getNome() + ".jpg";
     
     return new FileDownload(file, contentType, filename);
}

yorgan, você tem byte[], certo? E quer fazer download disso?

Você pode usar um ByteArrayInputStream:

byte[] content = ...; ByteArrayInputStream in = new ByteArrayInputStream(content); return new InputStreamDownload(in, "application/octet-stream", "meu-arquivo.bin", true, content.length);

Basta você alterar o content-type do download, que para exemplo eu usei application/octet-stream e o nome do arquivo, que usei meu-arquivo.bin.

Olá, pessoal?
Mesmo que o post seja antigo, gostaria de saber, nesse contexto, se esse mesmo conceito dá para usar trazendo um recordset BLOB do banco de dados. Como faríamos isso (no DAO, no Controller e no JSP)?