2013-01-21 3 views
5

私はasp.netの剃刀から来ています。通常、私はこれに[FilePost]を使用しますが、grailsでそれを行う方法はわかりません。ここで私は、私は、私はこれが何をしたいのかメモリにファイルを作成し、ユーザーにダウンロードさせてください

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

の形でインデックス上のリンクを持っていることは「(文字列を取るdoesnのあるコントローラ

class MyController{ 
def index{ } 
} 

を持っている状況

ですそれが何であれ)、その文字列を含むテキストファイルをダウンロードするようにユーザーに促す必要があります。ありがとう!

+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にそれを供給からあなたを防ぐことは何?たとえば、あなたのビジネスメソッドから作成されたString.getbytesまたはバイト。

0

ヘッダーにもう一度.txtファイル拡張子は不要です。

関連する問題