为什么Akka-Http路由在这里出错?

时间:2019-04-15 14:03:26

标签: scala akka-http

因此,基本上,我正在编写一些代码,这些代码将使用户可以将文件上传到服务器。我已经成功通过HTML表单(带有MultiPart.FormData)上传了文件,但是当我尝试'curl -X POST -F file =“ filepath” localhost:8080 / upload'时,却找不到'404 '消息。

我已经阅读了有关Akka的文档,但是我只是不知道为什么它会以一种方式起作用而不能以另一种方式起作用。我在这里做什么错了?

val route =
  post {
    path("upload") {
      fileUpload("file") {
        case (metadata, byteSource) => 
          val sink = FileIO.toPath(Paths.get("path of the image") resolve metadata.fileName)
          val writeResult = byteSource.runWith(sink)
          onSuccess(writeResult) { _ =>
            complete("file got uploaded")
          }
      }
    }
  } ~
    complete("404 not found")

1 个答案:

答案 0 :(得分:0)

您可以在path directive source中看到它接受路径末尾的路径前缀。因此,如果您使用path("upload"),它将仅接受以/upload/结尾的路径,而不会接受以/upload结尾的路径(不包含路径结束符号/)。

如果您不想同时使用/upload//upload路径,则应使用

pathPrefix("upload") ~ pathEndOrSingleSlash

此外,您可以使用ignoreTrailingSlash directive