【问题标题】:How to download a file with Play Framework 2.0如何使用 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

【问题讨论】:

    标签: java playframework-2.0


    【解决方案1】:

    可以在 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 - 确保您设置了内容处置

    【讨论】:

      【解决方案2】:

      服务文件 如果将整个内容加载到内存中以获取简单内容不是问题,那么大型数据集呢?假设我们想将一个大文件发回给 Web 客户端。

      阅读更多:http://www.playframework.com/documentation/2.0.x/JavaStream

      【讨论】:

        【解决方案3】:

        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 use content-disposition inline (stackoverflow.com/q/1395151/1066240) 无论如何请记住,最终浏览器决定如何处理文件(显示或下载)
        猜你喜欢
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多