2011-05-24 26 views
7

He logrado crear un sistema de carga de archivos que básicamente está copiando archivos en una carpeta específica y guardando en la base de datos su ubicación. Ahora necesito ayuda con la parte de descarga. Imaginar mi ubicación del archivo es: Archivos/1306242602661_file1.exe, y en mi opinión tengo esto:grails descargar archivo

<g:link controller="fileManager" action="downloadFile"> 
    Download</g:link><br> 

Necesito ayuda con el controlador DownloadFile. ¿Me puede dar una pista acerca de cómo hacer esto, teniendo en cuenta mi nombre de archivo es una cadena:

cadena archivo = "Archivos/1306242602661_file1.exe"

Respuesta

13

Dentro de su controlador de crear una acción de descargas con contenido siguiente:

def file = new File("path/to/file") 

if (file.exists()) { 
    response.setContentType("application/octet-stream") 
    response.setHeader("Content-disposition", "filename=${file.name}") 
    response.outputStream << file.bytes 
    return 
} 
// else for err message 
+2

Esta respuesta no está funcionando para mí, no hay errores, no hay nada que muestra ... – sikander

+0

No probé su solución, pero tener una duda. ¿Cuál es la necesidad de configurar contentType y header sus ...? Por cualquier problema de seguridad? –

+0

Sí: indique al navegador que su salida es binaria y el nombre del archivo para descargar: –