我在java中有一个播放控制器。请求的大小为15MB。此请求以流式方式来自APIGEE。我在控制器中使用了原始的解析器将数据写入文件。但我认为它会立即将整个请求数据写入文件。这意味着整个请求必须在内存中写入文件之前的某个时间点。有没有办法在Play框架(JAVA)中接收流请求?
答案 0 :(得分:2)
原始主体解析器不会将整个主体缓冲到内存中,它会将主体缓冲到一个点(使用play.http.parser.maxMemoryBuffer
配置,默认为100kb),一旦超过该值,它会将主体刷新为文件并开始将其写入文件,但它也限制了它将写入文件的数据量,使用play.http.parser.maxDiskBuffer
配置,默认为10mb。你的15mb身体可能超过了这个限制,所以你需要相应增加play.http.parser.maxDiskBuffer
。这一切都在the documentation中解释。
要回答有关如何传输请求的实际问题,请使用Java编写自定义正文解析器的文档:
https://www.playframework.com/documentation/2.6.x/JavaBodyParsers#Writing-a-custom-body-parser
这解释了你需要知道的关于Play体解析器如何工作以及如何进行流体解析的大部分事情,在这个答案中重复该文档没有任何意义。