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
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
<g:link class="download" action="download1" id="${comunicacaoInternaInstance.id}">Download </g:link>
assim ficou na minha interface