Grails 从控制器渲染文件

Grails 从控制器渲染文件,grails,gorm,render,Grails,Gorm,Render,我正在开发一个grails应用程序,正在努力将文本呈现到文件中。目前,我可以使用控制器中的以下功能将文本呈现到屏幕上: def generateTemplateSQL(Template templateInstance){ def result = templatingService.buildTemplateSql(templateInstance) render result } 现在,我想能够打印相同的文本到一个文件,这是我下面的内容。然而,我为这个函数创建

我正在开发一个grails应用程序,正在努力将文本呈现到文件中。目前,我可以使用控制器中的以下功能将文本呈现到屏幕上:

    def generateTemplateSQL(Template templateInstance){

    def result = templatingService.buildTemplateSql(templateInstance)
    render result
  }
现在,我想能够打印相同的文本到一个文件,这是我下面的内容。然而,我为这个函数创建的前端按钮一旦按下就会导致404错误。我猜我有点不对劲。有什么想法吗

    def writeTemplateSQLToFile(Template templateInstance){

    def result = templatingService.buildTemplateSql(templateInstance)
    render (file: new File(result), fileName: "TemplateSQL.met", contentType: "text/met")
  }
渲染文件:新文件..,文件名:TemplateSQL.met。。。从服务器的文件系统读取给定文件,并将其作为响应发送给客户端。在您的情况下,结果变量应该表示TemplateSQL.met文件所在文件系统上位置的绝对路径

我认为这不是你的情况。如果要将结果变量的内容保存到文件中,请使用以下方法:

def writeTemplateSQLToFile(Template templateInstance){

    def result = templatingService.buildTemplateSql(templateInstance)

    response.setHeader("Content-disposition", "filename=TemplateSQL.met")
    response.contentType = 'text/met'
    response.outputStream << result
    response.outputStream.flush()
}

将文本呈现到文件是什么意思?是否要将文本保存在服务器端的文件中,还是要将文本发送到浏览器并提示用户将其保存在本地文件中?我希望提示用户将文本保存到本地文件中。对不起,我不太清楚。啊,好吧,我不知道它是这样工作的。我假设它将创建一个包含结果的新文件。感谢您的澄清,我将研究FileOutputStream。通过这段代码,我单击了我创建的将SQL写入文件按钮,该按钮从显示屏幕上所有SQL的控制器调用writeTemplateSQLToFile。从这里,我可以右键单击页面并保存文件,但我希望提示用户是否要另存为?有可能吗?解决了!添加附件;如下面所做的文件下载。response.setHeaderContent-disposition,附件;filename=TemplateSQL。met@Jamie这必须依赖于浏览器,因为它在Firefox中对我有效,没有附件;也许,我正在用Chrome运行这个。您或任何人是否知道如何强制弹出另存为对话框窗口,并询问用户是否要保存文件?目前,它会自动直接下载到浏览器,而无需与用户确认。有一个浏览器设置可以控制这一点。您可以告诉浏览器将每个下载的文件保存在同一文件夹中,也可以提示您输入保存位置。