【问题标题】:Uploading multiple large files and other form data in playframework 2/scala在 playframework 2/scala 中上传多个大文件和其他表单数据
【发布时间】:2012-09-24 22:36:43
【问题描述】:

我正在尝试使用 scala 在播放框架中上传多个大文件。我仍然是一个 scala 和玩菜鸟。

我得到了some great code from here,它让我成功了 90%,但现在我又卡住了。

我现在遇到的主要问题是我只能读取文件数据,而不能读取已上传的任何其他数据,并且在浏览了播放文档之后,我不清楚如何从这里获得这些数据。任何建议表示赞赏!

  def directUpload(projectId: String) = Secured(parse.multipartFormData(myFilePartHandler)) { implicit request =>
    Ok("Done");
  }


def myFilePartHandler: BodyParsers.parse.Multipart.PartHandler[MultipartFormData.FilePart[Result]] = {
    parse.Multipart.handleFilePart {
      case parse.Multipart.FileInfo(partName, filename, contentType) =>
        println("Handling Streaming Upload:" + filename + "/" + partName + ", " + contentType);

        //Set up the PipedOutputStream here, give the input stream to a worker thread
        val pos: PipedOutputStream = new PipedOutputStream();
        val pis: PipedInputStream = new PipedInputStream(pos);
        val worker: UploadFileWorker = new UploadFileWorker(pis,contentType.get);
        worker.start();

        //Read content to the POS
        play.api.libs.iteratee.Iteratee.fold[Array[Byte], PipedOutputStream](pos) { (os, data) =>
          os.write(data)
          os
        }.mapDone { os =>
          os.close()
          worker.join()
          if( worker.success )
            Ok("uplaod done. Size: " + worker.size )
          else
            Status(503)("Upload Failed");
        }
    }
  }

【问题讨论】:

  • 只是好奇。您可以使用这种技术上传多大的文件?您是否遇到过上传文件大小的限制?
  • @ChetanBhasin 恐怕我很久以前就写过这段代码,不再使用这段代码,所以我不知道:(

标签: scala file-upload playframework playframework-2.0 multipartform-data


【解决方案1】:

您必须处理数据部分。您可以猜测(或在文档中查找)处理数据部分的函数称为:handleFilePart

def myFilePartHandler: BodyParsers.parse.Multipart.PartHandler[MultipartFormData.FilePart[Result]] = {
   parse.Multipart.handleFilePart {
     // ...
   }
   parse.Multipart.handleFilePart {
     // ...
   }
}

另一种方法是handlePart 方法。查看文档了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2014-01-14
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    相关资源
    最近更新 更多