2011-05-24 7 views
7

J'ai réussi à faire un système de téléchargement de fichiers qui consiste essentiellement à copier des fichiers dans un dossier spécifique et à enregistrer dans la base de données son emplacement. Maintenant, j'ai besoin d'aide pour la partie téléchargement. Imaginez mon emplacement du fichier est: fichiers/1306242602661_file1.exe, et à mon avis, j'ai ceci:Télécharger le fichier grails

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

J'ai besoin d'aide avec le contrôleur downloadFile. Pourriez-vous s'il vous plaît me donner un indice sur la façon de le faire, compte tenu de mon nom de fichier est une chaîne:

Chaîne fileName = « Fichiers/1306242602661_file1.exe »

Répondre

13

Au sein de votre contrôleur créer une action de téléchargement avec le contenu suivant:

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

Cette réponse ne fonctionne pas pour moi, aucune erreur, rien ... – sikander

+0

montrant que je ne l'ai pas essayé votre solution, mais ayant un doute. Quel est le besoin de configurer contentType et en-tête leur ..? Pour tout problème de sécurité? –

+0

Oui: Indiquez au navigateur que votre sortie est binaire et le nom de fichier à télécharger: –