【问题标题】:grails file downloadgrails文件下载
【发布时间】:2011-05-24 13:35:37
【问题描述】:

我已经成功地制作了一个文件上传系统,它基本上是将文件复制到特定文件夹并将其位置保存在数据库中。现在我需要下载部分的帮助。想象一下我的文件位置是:Files/1306242602661_file1.exe,在我看来我有这个:

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

我需要有关 downloadFile 控制器的帮助。考虑到我的文件名是一个字符串,请给我一个提示:

String fileName = "Files/1306242602661_file1.exe"

【问题讨论】:

    标签: file grails download


    【解决方案1】:

    您可以渲染文件。见http://grails.org/doc/2.4.x/ref/Controllers/render.html

    render file: new File ("path/to/file.pdf"), fileName: 'myPdfFile.pdf'
    

    【讨论】:

    • 您可能需要在渲染器中添加“contentType”属性。
    【解决方案2】:

    在您的控制器中创建一个包含以下内容的下载操作:

    def file = new File("path/to/file")
    
    if (file.exists()) {
       response.setContentType("application/octet-stream")
       response.setHeader("Content-disposition", "filename=${file.name}")
       response.outputStream << file.bytes
       return
    }
    // else for err message
    

    【讨论】:

    • 我没有尝试过您的解决方案,但有疑问。需要设置 contentType 和标头它们的..?对于任何安全问题?
    • 是的:告诉浏览器你的输出是二进制的和下载的文件名:
    • 如果您的文件名包含空格,则需要像这样引用文件名参数值: response.setHeader("Content-disposition", "filename=\"${file.name}\"" )
    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 2013-03-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多