【问题标题】:Spray File Upload: Unmarshalling MultiPartForm喷涂文件上传:解组 MultiPartForm
【发布时间】:2013-05-20 13:53:26
【问题描述】:

我正在学习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 不应该以这种方式使用。有没有更优雅的方法?

【问题讨论】:

    标签: scala unmarshalling spray


    【解决方案1】:

    这可能不是最优雅的,但它确实有效

    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
                 }
              })
    

    【讨论】:

      猜你喜欢
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      相关资源
      最近更新 更多