我正在使用scalatra-sbt-prototype。为了能够从我的文件系统上的目录中提供文件,我需要修改什么以及在哪里修改?例如,我想从 提供文件first.tar.gz
,/home/downloads/first.tar.gz
并使其可访问为:
http://localhost:8080/first.tar.gz
我正在使用scalatra-sbt-prototype。为了能够从我的文件系统上的目录中提供文件,我需要修改什么以及在哪里修改?例如,我想从 提供文件first.tar.gz
,/home/downloads/first.tar.gz
并使其可访问为:
http://localhost:8080/first.tar.gz
为了正确起见,您可能还需要设置 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
}
显然,路线是非常静态的,但会做你想做的事。
从一个动作返回java.io.File
到浏览器,似乎完成了这一点。