amp*_*dre 8 post scala file-upload httprequest
我有一个使用Spray编写的应用程序,我有一个页面,其中有一个<input type="file" name="foo">
表单元素可以POST到/fileUpload
.
我有一个Spray路由设置为/fileUpload
使用此代码侦听路径:
path("fileUpload") {
get { ctx => {
val request: HttpRequest = ctx.request
//Process the file, somehow with request?
ctx.complete("File Uploaded")
}}
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何获取POST主体并获取文件的句柄,我在网上找不到任何示例.
必须可以接收文件并使用Spray或甚至通过简单的Scala或Java处理它,但我不知道该怎么做.
有人可以帮忙吗?
谢谢!
虽然我还没有检查流媒体是否正常工作,但它可以使用Spray.我摆弄了一下,让这个工作:
post {
content(as[MultipartFormData]) {
def extractOriginalText(formData: MultipartFormData): String = {
formData.parts.mapValues { (bodyPart) =>
bodyPart.content.map{
(content) => new String(content.buffer)
}
}.values.flatten.foldLeft("")(_ + _)
}
formData =>
_.complete(
extractOriginalText(formData)
);
}
Run Code Online (Sandbox Code Playgroud)
如果您将纯文本文件上载到其中包含此代码的服务,则会咳嗽原始文本.我已经将它与ajax上传一起运行了; 它也应该与旧式文件上传表单一起使用.
在我看来,必须有一个更简单的方法来做到这一点,特别是内容的深度嵌套相当笨重.如果您发现简化,请告诉我.
更新(thx akauppi):
entity(as[MultipartFormData]) { formData =>
complete( formData.fields.map { _.entity.asString }.flatten.foldLeft("")(_ + _) )
}
Run Code Online (Sandbox Code Playgroud)