mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-22 10:28:27 +00:00
Use temporary files when receiving large data
This commit is contained in:
@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user