Grails 在内存中创建文件并让用户下载

Grails 在内存中创建文件并让用户下载,grails,text,download,Grails,Text,Download,我来自asp.net中的razor。通常我会使用[FilePost]来实现这一点,但不确定如何在grails中实现。情况是这样的 我有一个控制器 class MyController{ def index{ } } 然后我在索引上有一个链接,形式为 <g:link controller="MyController" action="downloadFile">Download</g:link><br> 下载 我想让它做的是获取一个字符串(不管它是什么),

我来自asp.net中的razor。通常我会使用[FilePost]来实现这一点,但不确定如何在grails中实现。情况是这样的

我有一个控制器

class MyController{
def index{ }
}
然后我在索引上有一个链接,形式为

<g:link controller="MyController" action="downloadFile">Download</g:link><br>
下载
我想让它做的是获取一个字符串(不管它是什么),我想让它提示用户下载包含该字符串的文本文件。谢谢

工作解决方案:

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()
}
def下载文件=
{
File File=File.createTempFile(“temp”、“.txt”)
file.write(“你好,世界!”)
response.setHeader“内容处置”,“附件;文件名=${file.name}.txt”
response.contentType='text plain'

response.outputStream可能是这样的:

byte[] bytes = "string".bytes

response.setContentType("text/plain")
response.setHeader("Content-disposition", "filename=\"xyz.txt\"")
response.setContentLength(bytes.size())
response.outputStream << bytes
byte[]bytes=“string”。字节
response.setContentType(“文本/普通”)
response.setHeader(“内容处置”,“文件名=\”xyz.txt\”)
response.setContentLength(bytes.size())

response.outputStream是什么阻止您自己创建字节并将其提供给outputStream?例如String.getbytes或从您的业务方法创建的字节。

在header中再次出现。txt文件扩展名不是必需的。

请参阅类似的问题和答案。我看到了那个问题,但它包含一个已经存在的文件下载后,我想在Fly上创建一个文件查看我的帖子,你不必创建文件