Use temporary files when receiving large data

This commit is contained in:
eikek
2022-03-18 23:57:36 +01:00
parent cafd3d7f65
commit e3ed0ba24d

View File

@ -20,7 +20,6 @@ import docspell.restserver.http4s.ResponseGenerator
import org.http4s._ import org.http4s._
import org.http4s.circe.CirceEntityEncoder._ import org.http4s.circe.CirceEntityEncoder._
import org.http4s.dsl.Http4sDsl import org.http4s.dsl.Http4sDsl
import org.http4s.multipart.Multipart
import org.log4s._ import org.log4s._
object UploadRoutes { object UploadRoutes {
@ -80,17 +79,26 @@ object UploadRoutes {
): F[Response[F]] = { ): F[Response[F]] = {
import dsl._ import dsl._
for { val decodeMultipart =
multipart <- req.as[Multipart[F]] EntityDecoder
updata <- readMultipart( .mixedMultipartResource(
multipart, maxSizeBeforeWrite = 10 * 1024 * 1024
"webapp", )
logger, .evalMap(_.decode(req, strict = false).value)
prio, .rethrow
cfg.backend.files.validMimeTypes
) decodeMultipart.use { multipart =>
result <- backend.upload.submitEither(updata, accOrSrc, true, itemId) for {
res <- Ok(basicResult(result)) updata <- readMultipart(
} yield res multipart,
"webapp",
logger,
prio,
cfg.backend.files.validMimeTypes
)
result <- backend.upload.submitEither(updata, accOrSrc, true, itemId)
res <- Ok(basicResult(result))
} yield res
}
} }
} }