如何在 Ktor 中限制允许的文件大小(多部分文件)

How to limit allowed file size (multipart-file) in Ktor

我想知道如何在 ktor 中更改多部分文件允许的文件大小? 我在文档中找不到任何关于此的内容(只有如何接收多部分文件)。我正在使用嵌入式网络服务器。我将限制客户端上的文件大小,但最好在服务器上也有该限制。

在网上搜索,我发现与该主题相关的唯一两件事是这个示例(似乎是 WAR 文件的配置): https://github.com/ktorio/ktor-samples/blob/master/other/maven-google-appengine-standard/webapp/WEB-INF/web.xml

和这个例子(如何接收多部分请求: https://github.com/ktorio/ktor-samples/blob/master/app/youkube/src/Upload.kt

据我所知,没有开箱即用的东西。

不过你可以从官方的例子中得到启发: https://ktor.io/servers/uploads.html

注意这部分:

val bytes = read(buffer).takeIf { it >= 0 } ?: break

还有他们计数的事实 bytesCopied:

bytesCopied += bytes

所以,你可以做类似的事情

if (bytesCopied > limit) { throw RuntimeException("Limit reached") }

这就是 Apache Tomcat 实现所做的。