【问题标题】:Finatra downloads HTML file instead of displaying itFinatra 下载 HTML 文件而不是显示它
【发布时间】:2016-06-03 16:59:34
【问题描述】:

我正在使用带有此代码的 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、...)而不是下载它?

【问题讨论】:

    标签: scala finatra


    【解决方案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
      ...
    }
    

    现在它工作得非常好。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2015-08-17
      • 1970-01-01
      • 2013-12-02
      • 2013-12-26
      相关资源
      最近更新 更多