Inserir/Recuperar documento na Aplicação
05/10/2015 22:32
0
Pessoal,

tenho um arquivo ".doc" estático que será exibido sempre que o usuário clicar em um link. Na verdade é um documento de termos e condições de uso.

Pensei em inserir esse arquivo direto na aplicação, pois é um arquivo único e que não sofrerá alterações.

Acontece que não sei onde inserir e nem como recuperá-lo. Como tentativa tentei incluir em "grails-app/assets/documentos/" mas não consegui recuperar conforme o exemplo abaixo:


def downloadArquivo(){
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("/assets/documentos/documento.doc")
?//inputStream NULL acima
?def conteudo = IOUtils.toByteArray(inputStream)
def nome = "arquivo.doc"
response.setContentType("application/octet-stream")
response.setHeader("Content-disposition", "attachment;filename=${nome}")

response.outputStream << conteudo
}

Vocês tem alguma dica para mim? Obrigado!!!
Tags: download arquivo path


0
O caminho é esse, só que a pasta de assets não está no classpath, por isso não foi com getResourceAsStream
Acredito que deve haver uma solução mais bonita, mas eu tentaria colocar este doc na pasta de controllers, junto ao controller onde está esta action de download


0
Se você estiver usando a versão 2.x do grails, crie sua pasta dentro de web-app na raiz do seu projeto e adicione seu arquivo, o caminho deverá ficar como /web-app/documentos/documentos.doc.
Para recuperar o arquivo faça:
def path = Holders.servletContext.getRealPath("/documentos/documentos.doc")
def inputStream = new FileInputStream(new File(path))
06/10/2015 08:26


1
Ou veja se o plugin assets-pipeline já não resolve isso diretamente, como nunca fiz nada do tipo não sei.
Talvez:
<a href="${assetPath(src: 'foo.doc')}">Baixar documento</a>


0
Magno, essa sua sugestão funcionou e era exatamente o que eu queria. Bem simples!!! Muito bom.

Só falta descobrir como faz para exibir o .doc na própria página (estilo anexo do gmail). Mas aí já foge do Grails.


0
Voce precisa exibir no browser E permitir o download?
Apenas exibir no navegador não atende? Neste caso bastaria uma view simples
Ou talvez ter uma versão do documento em .doc e um .gsp
Ou ao invés de .doc usar .pdf, daí basta setar o content type corretamente e o navegador já irá exibir o conteúdo


0
Pois é, o requisito do cliente era esse. Exibir um .doc e permitir o download. Só que depois que ele viu o link de Download ele já desistiu e quer exibir na própria tela mesmo.

Mudou de ideia. Rotina do programador né...

Abraço. Valeu a ajuda!



0
Muito interessante!



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto