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 に答える