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

标签 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...)而不是下载它?

最佳答案

终于可以解决问题了。我的 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
  ...
}

现在它工作得很好。

关于scala - Finatra 下载 HTML 文件而不是显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595711/

相关文章:

algorithm - Spark : Counting co-occurrence - Algorithm for efficient multi-pass filtering of huge collections

scala - Slick threadLocalSession 与隐式 session

scala - 如何使用Cats验证来验证Option值?

java - 斯卡拉和菲纳特拉 : send file server response directly from disk to network w/o loading into memory

scala - 如何在 Finatra 中处理 put 请求?

ajax - Finatra 访问控制允许来源

java - 为什么 SimpleDateFormat 解析不正确的日期?

sql - 使用 Slick 2 的 where 子句中的多个参数