您可以使用
fromFields('user)
获取用户名。但不幸的是,你会得到这个例外:
java.lang.IllegalStateException: Substream Source cannot be materialized more than once
这是已知问题:
https://github.com/akka/akka-http/issues/90
作为解决方法,您可以使用
toStrictEntity
指令:
toStrictEntity(3.seconds) {
formFields('user) { (user) =>
uploadedFile("csv") {
case (metadata, file) => {
println(s"file received by $user" + file.length())
complete("hahahah")
}
}
}
}
}
我认为这不是一个好主意,因为你将把整个请求实体读入内存,如果你有一个小实体,它就会工作。
作为更好的解决方案,您可以实现自己的
uploadedFile
上载的文件
源代码示例:
https://github.com/akka/akka-http/blob/v10.0.10/akka-http/src/main/scala/akka/http/scaladsl/server/directives/FileUploadDirectives.scala