我正在尝试spray.io编写一个基本的REST端点,它通过multipart / form-data接受来自客户端的文件。
我的路线看起来像这样:
val route = {
post {
path("upload") {
respondWithMediaType(`application/json`) {
entity(as[MultipartFormData]) {
formData => {
formField("file") {
file => {
val fileBodyPart: BodyPart = formData.get("file").get
val fileData: InputStream = new ByteArrayInputStream(fileBodyPart.entity.data.toByteArray)
// do something with the InputStream and respond
}
}
}
}
}
}
}
}
我担心的是data.toByteArray
调用会将整个文件读入内存。我想直接将它作为InputStream读取,这样我就可以使用任意大的文件。
如果我使用的是Jersey,我只会使用类似的内容:
@FormDataParam("file") InputStream uploadedInputStream
作为定义REST资源的方法中的参数。喷雾中是否有相同的效果?
感谢。