Termiraptor
Termiraptor

Reputation: 23

Why is Akka-Http Routing going wrong here?

So basically, I'm writing some code that will make it possible for users to upload a file to a server. I've already succeeded in uploading a file via an HTML form (with MultiPart.FormData), but when I try 'curl -X POST -F file="filepath" localhost:8080/upload', I get a '404 not found' message.

I already read the documentation about Akka, but I just can't get to know why it works in one way and not in the other. What am I doing wrong here?

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")

Upvotes: 0

Views: 93

Answers (1)

Aleksey Isachenkov
Aleksey Isachenkov

Reputation: 1240

You can see in path directive source that it accepts a path prefix with the path end. So if you use path("upload") it will accept only paths ended with /upload/ but won't accept paths ended with /upload (without path end symbol /).

If you wont to use both /upload/ and /upload paths, you should use

pathPrefix("upload") ~ pathEndOrSingleSlash

Also, you can use ignoreTrailingSlash directive.

Upvotes: 0

Related Questions