【问题标题】:How can I send a file to the browser using Scalatra?如何使用 Scalatra 将文件发送到浏览器?
【发布时间】:2011-04-24 17:19:16
【问题描述】:

我正在使用scalatra-sbt-prototype。为了能够从我的文件系统上的目录中提供文件,我需要修改什么以及在哪里修改?举例来说,我想从/home/downloads/first.tar.gz 提供文件first.tar.gz,并以如下方式访问它:

http://localhost:8080/first.tar.gz

【问题讨论】:

    标签: scalatra


    【解决方案1】:

    为了正确起见,您可能还需要设置 contentType 以便浏览器不会尝试将其显示为 text/html 如果您在之前的过滤器中设置了该设置,并且处置标头具有正确的名称。大多数浏览器会从 url 推断文件名,但可以肯定的是,您可以明确设置它。

    get("/first.tar.gz") {
        contentType = "application/octet-stream"
        val file = new java.io.File("/home/downloads/first.tar.gz")
        response.setHeader("Content-Disposition", "attachment; filename=" + file.getName)
        file
    }
    

    显然路线是非常静态的,但会做你想做的事。

    【讨论】:

    • 我在想也许处理程序会猜到 mimetype?
    • @Geo 不幸的是,目前还没有。刚刚用 curl --head 测试过。
    【解决方案2】:

    从一个动作返回一个java.io.File 给浏览器,似乎完成了这个。

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 2012-10-26
      • 2014-04-17
      • 1970-01-01
      • 2017-08-18
      相关资源
      最近更新 更多