Finatra下载HTML文件而不是显示它

时间:2016-06-02 15:11:05

标签: scala finatra

我正在使用Finatra 2.1.6代码:

get("/:*") { request: Request =>
response.ok.fileOrIndex(
  request.params("*"),
  "index.html")
}

如果我从例如IntelliJ,它工作得很好并显示html文件。但是,如果我从已组装的jar启动服务器(使用sbt assembly),则不会:每当我尝试访问我放入src/resources/index.html的index.html时,它会尝试下载该文件contentType设置为application/octet-stream,而不是text/html

如何更改行为以便呈现html文件(或css,js,...)而不是下载?

1 个答案:

答案 0 :(得分:1)

最后可以解决问题。我对sbt assembly的合并策略类似于

val meta = """META.INF(.)*""".r
assemblyMergeStrategy in assembly := {
  ...
  case meta(_) => MergeStrategy.discard
  ...
}

将丢弃文件mime.types,该文件表示用于给定文件扩展名的MIME类型。我改成了

val metaMime = """META.INF(.)mime.types""".r
val meta = """META.INF(.)*""".r
assemblyMergeStrategy in assembly := {
  ...
  case metaMime(_) => MergeStrategy.deduplicate
  case meta(_) => MergeStrategy.discard
  ...
}

现在它完美无缺。