0

我正在尝试使用 GRAILS 实现简单的向/从 DB 上传/下载文件的功能。除了 text/html 文件外,一切似乎都运行良好。

领域:

class Content {
    byte[] file;
    //filesProperties
    String contentType
    String fileName
    Long size

    static constraints = {
        file maxSize: 1024 * 1024 * 20, nullable: true; //20MB
        fileName nullable:true
        size nullable:true
        contentType nullable:true   
    }
}

行动:

def getFile()
{
    def content = Content.get(params.id)
    response.contentType = content.contentType
    response.setHeader("Content-disposition","attachment;filename="+content.fileName)
    response.contentLength= content.size
    response.outputStream << content.file
    response.outputStream.flush()

}

上传 html 文件后,数据库站点上的一切似乎都很好。简单的 SELECT 显示文件已经上传。当我尝试下载 html 文件时,我得到 Page not found(在 Chrome net::ERR_FILE_NOT_FOUND 中)。Action getFile() 适用于任何其他内容类型。

是否存在以这种方式强制下载(不在浏览器中显示)html文件的可能性?

顺便说一句:为什么显示它(在 Content-disposition 键中没有“附件”值的 response.header)也不起作用?

4

1 回答 1

1

您可以尝试强制下载:

response.setHeader("Content-Type: application/force-download");
于 2013-01-24T13:43:20.443 回答