gpt4 book ai didi

grails - grails,如何强制浏览器下载文件

转载 作者:行者123 更新时间:2023-12-02 14:16:45 26 4
gpt4 key购买 nike

在 Controller 中,我这样做是为了尝试让浏览器在用户单击链接时下载文件:

    render( contentType: 'text/csv', text: output);

这在Chrome中有效,但在IE或safari中无效,它们只是显示数据。此外,它还会以数字形式显示文件名(恰好是网址上的ID,例如www.me.com/show/1

显然。解决下载问题的方法是将其转换为八位字节流。这可以在htaccess文件中完成,但是我不使用apache。有没有办法做到这一点?我可以想象这是一个常见的情况。

在php中,可以这样做:
  header('Content-Disposition: attachment; filename="downloaded.csv"');

有任何想法吗?

在阅读了下面的两个回复后(谢谢!),此方法有效:
response.setHeader "Content-disposition", "attachment; filename=report.csv"
response.contentType = 'text/csv'
response.outputStream << output
response.outputStream.flush()

令人惊讶的是,我可以使用字符串并将<<写入输出流。我打算尝试弄清楚如何将字符串转换为流。

最佳答案

class DownloadController {
def download(long id) {
Document documentInstance = Document.get(id)
if ( documentInstance == null) {
flash.message = "Document not found."
redirect (action:'list')
} else {
response.setContentType("APPLICATION/OCTET-STREAM")
response.setHeader("Content-Disposition", "Attachment;Filename=\"${documentInstance.filename}\"")

def outputStream = response.getOutputStream()
outputStream << documentInstance.filedata
outputStream.flush()
outputStream.close()
}
}
}

refer this site for more

关于grails - grails,如何强制浏览器下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23055103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com