2011-05-24 19 views
7

मैंने सफलतापूर्वक एक फ़ाइल अपलोड सिस्टम बनाने में कामयाब रहा है जो मूल रूप से फ़ाइलों को एक विशिष्ट फ़ोल्डर में कॉपी कर रहा है और डेटाबेस में इसके स्थान को सहेज रहा है। अब मुझे डाउनलोड भाग में मदद की ज़रूरत है। कल्पना कीजिए कि मेरी फाइल स्थान है: फ़ाइलें/1306242602661_file1.exe, और मेरे विचार में मैं इस है:grails फ़ाइल डाउनलोड

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

मैं DownloadFile नियंत्रक के साथ मदद की जरूरत है।

स्ट्रिंग fileName = "फ़ाइलें/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

+0

मैं अपने समाधान की कोशिश की नहीं था, लेकिन एक संदेह है। सामग्री सेटअप करने की आवश्यकता क्या है और उनके शीर्षलेख ..? किसी भी सुरक्षा मुद्दे के लिए? –

+0

हां: ब्राउज़र को बताएं कि आपका आउटपुट द्विआधारी है और डाउनलोड के लिए फ़ाइल नाम: –

5

आप एक फ़ाइल प्रस्तुत कर सकते हैं। देख http://grails.org/doc/2.4.x/ref/Controllers/render.html

render file: new File ("path/to/file.pdf"), fileName: 'myPdfFile.pdf' 
+2

आपको रेंडरर को" contentType "विशेषता जोड़नी पड़ सकती है। –

संबंधित मुद्दे