2013-01-21 26 views
5

डाउनलोड करें, मैं एएसपीनेट में रेज़र से आ रहा हूं। आम तौर पर मैं इसके लिए एक [फाइलपोस्ट] का उपयोग करता हूं, लेकिन यह सुनिश्चित नहीं करता कि इसे grails में कैसे किया जाए। यहाँ स्थितिमेमोरी में फ़ाइल बनाएं और उपयोगकर्ता को

मैं एक नियंत्रक

class MyController{ 
def index{ } 
} 

मैं तो

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

के रूप मैं ऐसा करना चाहते हैं क्या में सूचकांक पर एक कड़ी है है एक स्ट्रिंग ले (नहीं करता है ' कोई फर्क नहीं पड़ता कि यह क्या है) और मैं चाहता हूं कि उपयोगकर्ता उस स्ट्रिंग वाले टेक्स्ट फ़ाइल को डाउनलोड करने के लिए संकेत दे। धन्यवाद!

+0

जवाब http://stackoverflow.com/questions/6111255/grails-file-download के साथ इसी तरह प्रश्न देखें। – rimero

+0

मैंने इसे देखा, लेकिन यह एक फ़ाइल लेता है जो पहले से मौजूद है और इसे डाउनलोड करता है, मैं फ्लाई पर एक फाइल बनाना चाहता हूं – Badmiral

उत्तर

4

कार्य समाधान:

def downloadFile = 
{ 
    File file = File.createTempFile("temp",".txt") 
    file.write("hello world!") 
    response.setHeader "Content-disposition", "attachment; filename=${file.name}.txt" 
    response.contentType = 'text-plain' 
    response.outputStream << file.text 
    response.outputStream.flush() 
} 
+0

मेरी पोस्ट देखें, आपको फ़ाइल बनाने की ज़रूरत नहीं है –

4

तो शायद कुछ इस तरह:

byte[] bytes = "string".bytes 

response.setContentType("text/plain") 
response.setHeader("Content-disposition", "filename=\"xyz.txt\"") 
response.setContentLength(bytes.size()) 
response.outputStream << bytes 
1

क्या आप अपने आप को बाइट बनाने और outputstream करने के लिए इसे खिलाने से रोक रहा है? उदाहरण के लिए आपके व्यवसाय की विधि से बनाई गई स्ट्रिंग.getbytes या बाइट्स।

0

शीर्षलेख में फिर से .txt फ़ाइल एक्सटेंशन की आवश्यकता नहीं है।