Vraptor3 - Download de arquivos via json [resolvido]

5 respostas
G

Estou desenvolvendo uma aplicação com vraptor que nada mais é que um rest webservices. Esses webservices serão utilizados por uma ferramenta em FX que ficará no cliente. Uma das funcionalidades é disponibilizar o download de arquivos de atualização.

Qual a melhor forma de fazer isso pelo vraptor usando json? Pensei em deixar o retorno json com um campo onde o conteúdo seria o arquivo em base64. Porém esses arquivos são um pouco grandes, em torno de 15M.

5 Respostas

Lucas_Cavalcanti

se vc tá usando rest, e um recurso é um binário (por exemplo um pdf) vc vai responder a requisição com um pdf mesmo, não com um json ou xml que contenha um pdf…

o ideal é fazer:

response.setContentType("meu_formato_binario");
response.getWriter(); //escreve tudo aqui

ou criar um result específico da sua aplicação que faz isso…

G

Lucas, depois pensei bem e usei assim mesmo. O retorno do meu método ficou como Download.

Estou mais acostumado com soap, que você pode trafegar tudo no mesmo envelope.

Abraços, e obrigado

Lucas_Cavalcanti

verdade, tinha esquecido do Download :stuck_out_tongue:

G

Deixe-me espichar um pouco… os arquivos são armazenados via JPA no banco de dados. Estou usando byte[] nas entidades, que geram um bytea no banco. Porém os arquivos são grandes, será que posso usar Stream na entidade e passar isso direto para o vraptor?

Esse projeto é bem pequeno, e não tem EJB nem nada. O próprio vraptor que inicializa o entity-manager-factory. Mesmo assim estou preocupado com a performance em chamar um byte[] e depois tenho que converter para input-stream para usar no Download do vraptor.

Abraços

Lucas_Cavalcanti

acho que a jpa suporta InputStreams sim… no pior dos casos vc pode colocar o campo como Blob, ou coisas do tipo

Criado 16 de fevereiro de 2010
Ultima resposta 17 de fev. de 2010
Respostas 5
Participantes 2