2011-05-24 102 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