我正在学习Spray,使用spray-can和spray-httpx(没有spray-routing)来接受上传的文件。我想出了以下几点:
def receive = {
...
case HttpRequest(POST, Uri.Path("/upload"), _, entity, _) =>
object mp extends MultipartUnmarshallers
mp.MultipartFormDataUnmarshaller(entity).foreach{ part =>
for{
fname <- part.fields.get("Filename").map(_.entity.asString)
fbody <- part.fields.get("Filedata").map(_.entity.buffer)
}{
println(fname+ ": " +fbody.length)
}
}
sender ! HttpResponse(status = 200)
...
}
这行得通,但我认为 Multipart unmarshaller 不应该以这种方式使用。有没有更优雅的方法呢?