当前位置:  开发笔记 > 编程语言 > 正文

Grails文件下载

如何解决《Grails文件下载》经验,为你挑选了1个好方法。

我正试图让一个允许用户上传他们喜欢的任何文件类型的网站.我已经很好地实现了这个功能,并且文件保存在服务器上.稍后他们可以下载文件进行查看,但我无法让它工作.

我已经使用了我可以掌握的任何示例,但他们都倾向于使用文本文件作为示例.我的问题是pdf和许多其他文件类型没有正确下载.它们似乎下载得很好,但没有一个文件会成功打开.比较文件,似乎大多数文件内容是正确的,但某些部分不是.

这是我的常规代码:

def file = new File(params.fileDir)    
response.setContentType("application/octet-stream")
response.setHeader("Content-disposition", "filename=${file.getName()}")
response.outputStream << file.text
return

此代码保存在由下载链接调用的控制器内.我尝试过使用不同的contentTypes,但我不知道哪种类型可以使用 - 有一个吗?我尝试的任何东西都无法解决问题.

谢谢你的帮助.



1> Siegfried Pu..:

问题是您使用"file.text"将文件的内容读入String.即使内容是二进制文件(即PDF文件是二进制文件),也使用系统字符编码转换文件的内容,并使用响应编码将其发送到客户端,从而修改二进制内容.你应该使用这样的不同方法:

def file = new File(params.fileDir)    
response.setContentType("application/octet-stream")
response.setHeader("Content-disposition", "attachment;filename=${file.getName()}")

response.outputStream << file.newInputStream() // Performing a binary stream copy

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有