如何使用Scalatra将文件发送到浏览器?

时间:2011-04-24 17:19:16

标签: scalatra

我正在使用scalatra-sbt-prototype。我需要修改什么,以及在哪里,能够从我的文件系统上的目录提供文件?比方说,我想从first.tar.gz提供文件/home/downloads/first.tar.gz,并将其设为:

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

2 个答案:

答案 0 :(得分:6)

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

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
}

显然这条路线非常静止但会做你想做的事。

答案 1 :(得分:1)

从操作中返回java.io.File到浏览器似乎可以实现此目的。