喷涂路由 - 使用InputStream进行解组

时间:2014-07-29 10:53:02

标签: inputstream unmarshalling spray

我正在尝试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资源的方法中的参数。喷雾中是否有相同的效果?

感谢。

0 个答案:

没有答案