Scala Spray文件上载:解组多部分表单
我正在学习Spray,使用Spray can和Spray httpx(无Spray路由)接受上传的文件。我提出了以下建议:Scala Spray文件上载:解组多部分表单,scala,unmarshalling,spray,Scala,Unmarshalling,Spray,我正在学习Spray,使用Spray can和Spray httpx(无Spray路由)接受上传的文件。我提出了以下建议: def receive = { ... case HttpRequest(POST, Uri.Path("/upload"), _, entity, _) => object mp extends MultipartUnmarshallers mp.MultipartFormDataUnmarshaller(entity)
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)
...
}
def接收={
...
case-HttpRequest(POST,Uri.Path(“/upload”),\ux,entity,\ux)=>
对象mp扩展多端口处理器
mp.MultipartFormDataUnmarshaller(实体).foreach{part=>
为了{
fname这可能不是最优雅的,但是,它很有效
val e = spray.httpx.unmarshalling.FormDataUnmarshallers.MultipartFormDataUnmarshaller.apply(request.entity)
e.fold(error => {
throw new IllegalArgumentException("could not unmarshall multipart form data")
},
formdata => {
for (part <- formdata.fields) {
//do what you want with the parts
}
})
val e=spray.httpx.unmarshalling.FormDataUnmarshallers.MultipartFormDataUnmarshaller.apply(request.entity)
e、 折叠(错误=>{
抛出新的IllegalArgumentException(“无法解组多部分表单数据”)
},
formdata=>{
为了(部分)