2011-05-24 69 views
7

我成功地设法创建了一个文件上传系统,该系统基本上是将文件复制到特定文件夹并将其位置保存在数据库中。现在我需要下载部分的帮助。想象一下,我的文件的位置是:文件/ 1306242602661_file1.exe,在我看来,我有这样的:grails文件下载

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

我需要用downloadFile控制器帮助。你能给我一个关于如何做到这一点,考虑到我的名暗示是一个字符串:

字符串文件名=“文件/ 1306242602661_file1.exe”

回答

13

在控制器中创建具有下列内容的下载操作:

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

这个答案是不是为我工作,没有错误,没有显示... – sikander 2014-01-24 11:51:17

+0

我没试过您的解决方案,但有一个疑问。什么是需要设置contentType和标题他们..?对于任何安全问题? – 2014-12-03 04:55:01

+0

是的:告诉浏览器您的输出是二进制文件和下载的文件名: – 2014-12-03 05:18:58