如何使用 Play Framework 2.0 下载文件
Posted
技术标签:
【中文标题】如何使用 Play Framework 2.0 下载文件【英文标题】:How to download a file with Play Framework 2.0 【发布时间】:2012-12-04 17:20:43 【问题描述】:我正在使用 Play Framework 2.0.3 创建一个应用程序,该应用程序可以提供用户可以下载的 Excel 文件。
response().setContentType("application/x-download");
response().setHeader("Content-disposition","attachment; filename=tradeLogTest.xlsx");
但是,如何从response()
获取输出流?tks
【问题讨论】:
【参考方案1】:Play 的动作可以返回一个 File:
response().setContentType("application/x-download");
response().setHeader("Content-disposition","attachment; filename=tradeLogTest.xlsx");
return ok(new File("/absolute/path/to/tradeLogTest.xlsx"));
Here's an API for Results
【讨论】:
在 Scala 中有一个快捷方式:Ok.sendFile(new java.io.File(myFile))。也许 Java 也一样 Here 是@JulienLafont 快捷方式的官方文档。 支持简历吗? 如何强制例如 chrome 使用其内部 PDF 查看器打开文件(如果是 PDF)? @behzad usecontent-disposition inline
(***.com/q/1395151/1066240) 无论如何请记住,最终浏览器决定如何处理文件(显示或下载)【参考方案2】:
服务文件 如果将整个内容加载到内存中以获取简单内容不是问题,那么大型数据集呢?假设我们想将一个大文件发回给 Web 客户端。
阅读更多:http://www.playframework.com/documentation/2.0.x/JavaStream
【讨论】:
【参考方案3】:可以在 Play as 中为静态文件提供下载选项:
Ok.sendFile(new File("path to file/abc.csv"), inline=true).withHeaders(CACHE_CONTROL->"max-age=3600",CONTENT_DISPOSITION->"attachment; filename=abc.csv", CONTENT_TYPE->"application/x-download");
还有其他可用的参数
对于 Internet Explorer - 确保设置内容处置
【讨论】:
以上是关于如何使用 Play Framework 2.0 下载文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Play Framework 2.0 (Scala) 中插入测试数据?
Play framework 2.2.0 打印最终解决的依赖列表