0

我的服务器端代码如下(只是为了测试它):

def upload = Action(parse.maxLength(maxLength = 10*1024, parser.multipartFormData)) {
    implicit request =>
      Logger.info("data: " + request.body.dataParts)
      Logger.info("file: " + request.body.file("picture"))
      Logger.info("req: " + request.contentType)
      Logger.info("req body: " + request.body)
      Ok("File has been uploaded")
}

我的客户端代码是一个简单的表单,具有文件类型的输入。

 @helper.form(action = routes.Application.upload, 'enctype -> "multipart/form-data") {
    <p>
      <input type="text" name="name" />
    </p>
    <p>
      <input id="imageFile" type="file" name="picture" accept="image/*" />
    </p>
    <p>
      <input type="submit" value="Save" />
    </p>
  }

问题是,如果您尝试上传大于 10KB 的文件,浏览器将挂起等待服务器完成,即使服务器似乎已经完成了对请求的处理。如何解决?

4

1 回答 1

1

不幸的是,在 Play 2.0.4 中似乎存在与此相关的问题,即使请求正文已在服务器端消耗,浏览器也会挂起等待文件完成上传。可以在此处找到有关该问题的讨论,并在此处报告(如果达到 maxlength,则播放不会完成消费请求)

幸运的是,这已经在 Play 2.1 中得到解决,并且第一个候选版本已经可用。因此,最好的办法是将您的应用迁移到 Play 2.1。

于 2012-12-04T18:23:55.103 回答