我正在尝试使用GRAILS在数据库功能上实现简单的上传/下载文件。除了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文件时,我找不到页面(在Chrome net :: ERR_FILE_NOT_FOUND中)。 Action getFile()适用于任何其他内容类型。
是否有可能以这种方式强行下载(不在浏览器中显示)html文件?
BTW:为什么要显示它(在Content-disposition键中没有“附件”值的response.header)也不起作用?
答案 0 :(得分:1)
您可以尝试强制下载:
response.setHeader("Content-Type: application/force-download");