gpt4 book ai didi

scala - Lagom 的多部分表单错误

转载 作者:行者123 更新时间:2023-12-04 14:43:03 24 4
gpt4 key购买 nike

我们的大多数 Lagom 入口点不使用多部分表单请求,但有一个使用。由于 Lagom 目前本身不支持多部分请求,我看到的一般建议是使用 PlayServiceCall 机制调用底层的 Play API。

我们已经做到了,并且在大多数情况下都有效。但是我们遇到间歇性错误,尤其是在提交大文件时。这些总是 java.util.zip.ZipException(各种类型)的情况,看起来好像没有收到要处理的整个文件。

这是入口点在代码中的样子;特别是 Play 包装机制:

def upload = PlayServiceCall[NotUsed, UUID] {
wrapCall => Action.async(multipartFormData) {
request => wrapCall(ServiceCall { _ =>
val upload = request.body.file("upload")
val input = new FileInputStream(upload.get.ref.file)
val filename = upload.get.filename
// ...
// other code to actually process the file
// ...
})(request).run
}
}

这只是我们看到的两个异常示例:

Caused by: java.util.zip.ZipException: invalid code lengths set
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:194)
at org.apache.poi.openxml4j.util.ZipSecureFile$ThresholdInputStream.read(ZipSecureFile.java:214)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
etc.

Caused by: java.util.zip.ZipException: invalid distance too far back
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:194)
at org.apache.poi.openxml4j.util.ZipSecureFile$ThresholdInputStream.read(ZipSecureFile.java:214)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
etc.

我们在 Scala 中使用 Lagom 1.3.8。有什么建议吗?

最佳答案

尝试使用基于 Akka HTTP 的新服务网关。

您可以通过将以下内容添加到您的 build.sbt 来启用此功能:

lagomServiceGatewayImpl in ThisBuild := "akka-http"

新服务网关在 Lagom 1.3.8 中仍然默认禁用,但遇到此问题的 Lagom 用户报告说,通过启用 akka-http 网关可以解决此问题。这将成为 Lagom 1.4.0 中的默认实现。

关于scala - Lagom 的多部分表单错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46794202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com