Fazer o download de arquivo com extensão correta
03/05/2012 22:55
0
Galera, o problema é o seguinte: eu preciso fazer o download de um arquivo qualquer(ele pode ter diferentes extensões como pdf, pptx, doc ou qualquer outro tipo de extensão), então fiz esse código simples:

def download(){
def arquivo = Arquivo.findById(params.id)
if(arquivo.arquivoPdf){
response.outputStream << arquivo.arquivoPdf
}else{
response.sendError(404)
}
}


Quando o arquivo é no formato PDF, tudo beleza, o browser ja reconhece e tals, mas quando o arquivo possui outra extensão ele faz o download do arquivo sem extensão, porém o arquivo fica desconhecido pelo usuário.

Espero ter sido claro em relação a dúvida, desde ja agradeço.
Tags: download extensão arquivo


1
amigao é o seguinte passei por esse problema há algumas semanas atraz eu tive que salva o nome do arquivo no banco ai eu jogo o nome na hora do downoad

da uma olhada nesse post

http://www.grailsbrasil.com.br/post/show/1743
04/05/2012 17:50


0
Certo, arquivos de imagens, pdf e documentos do word são reconhecidos pelo Windows, mas outros tipos são baixados sem extensão, o código pro download ficou assim:

response.setHeader("Content-disposition", "attachment; filename=${arquivoInstance.titulo}")
response.contentType = arquivoInstance.tipoArquivo
response.outputStream << arquivoInstance.arquivo


Mas o problema de baixar sem extensão continua para arquivos com extensões incomuns... Mesmo assim obrigado manthay, se alguém tiver outra solução, agradeço.
04/05/2012 19:25


0
vamos la meu jovem
da uma olhada no meu código de download
quando voce seleciona algum arquivo para fazer upload ele carrega um nome ex: foto.jpg
ai voce salva esse nome foto.jpg no bando como nome da foto ai quando voce for fazer o Download voce faz assim

response.setHeader("Content-Disposition", "attachment;filename=\"${documento.nomeArquivo1}")
esse nomeArquivo um sera o nome foto.jpg assim ele vai reconhecer como jpj

def documento = ComunicacaoInterna.get(params.id)
byte[] imagem = documento.arquivo1
response.contentType = "application/octet-stream"
response.setHeader("Content-Type", "application/octet-stream;")
response.setHeader("Content-Disposition", "attachment;filename=\"${documento.nomeArquivo1}")
response.outputStream << imagem


04/05/2012 19:39


0
<g:link class="download" action="download1" id="${comunicacaoInternaInstance.id}">Download </g:link>
assim ficou na minha interface
04/05/2012 19:41


0
Obrigado manthay, consegui, pra quem tiver o mesmo problema, para obter o nome original do arquivo com a extensão é só utilizar:

arqiuvo.originalFilename


Valeu.
04/05/2012 21:22



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