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

时间:2013-01-21 01:53:44

标签: grails text download

我来自asp.net中的剃须刀。通常我会使用[FilePost],但不知道如何在grails中使用它。这是情况

我有一个控制器

class MyController{
def index{ }
}

然后我以

的形式链接索引
<g:link controller="MyController" action="downloadFile">Download</g:link><br>

我想要做的是取一个字符串(无关紧要),我希望它提示用户下载包含该字符串的文本文件。谢谢!

4 个答案:

答案 0 :(得分: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()
}

答案 1 :(得分:4)

所以可能是这样的:

byte[] bytes = "string".bytes

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

在标题中,不再需要.txt文件扩展名。