akka Lightbend列出的其中一个示例项目无法处理较大的文件

woobm2wo  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(172)

我在LightBend的讨论组here上也发了同样的问题,但是没有得到一个能解决我的问题的答案。因为我真的很想知道这里的问题是什么,所以让我在这里再发一次这个问题,希望有一个大的观众群可能意味着更好的机会得到答案。
基本上,在这个页面,https://developer.lightbend.com/start/?group=play,我们可以找到一个Play!项目的例子列表。在这些例子中,有一个项目是关于Java File Upload(https://developer.lightbend.com/start/?group=play&project=play-samples-play-java-fileupload-example)的。这个项目教读者如何使用Akka Streaming的想法创建一个文件上传器,因此即使文件很大,我们仍然可以安全地上传它,而不需要将它作为一个整体读入内存。
这个项目适用于小文件,但当我尝试上传一个更大的文件时,例如,大小约为15 M,我会得到一个页面,上面写着“连接已重置”。
现在,在这个项目例子中,在application.conf文件中,我看到:


# **Sets the maximum file size that can be uploaded to 1024k.**

# https://www.playframework.com/documentation/2.8.x/JavaBodyParsers#Content-length-limits

play.http.parser.maxMemoryBuffer=1024k

的确-如果我上传任何小于1024 k的文件,它都会工作,但任何大于1024 k的文件,它都不会工作。
现在,我非常困惑。注意1024 K是maxMemoryBuffer的大小!这对我来说没有意义,因为“流媒体”的整个想法,是能够用一个小得多的内存缓冲区流它,而不是先把整个文件读到内存中。但是文件大小必须小于play.http.parser.maxMemoryBuffer???这让我觉得它可能只是把整个文件读进内存...
我知道我错了,但就是不知道我错在哪里,我错过了什么。我希望有更好的想法的人可以看到这个问题,并会善意地让我知道发生了什么...非常感谢你的帮助!

更新日期:

让我在这里补充一点信息。所以如果我上传的文件大于play.http.parser.maxMemoryBuffer,错误信息如下(使用Chrome):

This site can’t be reached
ERR_CONNECTION_ABORTED

这是我在日志中看到的内容:

[debug] a.h.i.u.StreamUtils$DelayCancellationStage$$anon$11 - Delaying cancellation for 1 minute

希望这能对大家有所帮助??

91zkwejq

91zkwejq1#

在您的application.conf设置中;

play.http.parser.maxDiskBuffer=500MB

我们需要这个来允许视频上传到我们的播放应用程序。默认值是10 M,如果你没有设置一个。

相关问题