Akka指令「fileUpload」是否將整個輸入實體文件複製到內存中?是否有一種方法可以將大文件分段上載爲1 GB而不消耗1 GB內存?Akka指令fileUpload將整個輸入實體文件複製到內存中?
val uploadFile = File.createTempFile("uploadFile", ".txt")
extractRequestContext { ctx =>
implicit val materializer = ctx.materializer
implicit val ec = ctx.executionContext
fileUpload("csv") {
case (metadata, byteSource) =>
val sumF = byteSource.runFold(ByteString.empty) { case (acc, i) => acC++ i }.map(s => s.utf8String)
onSuccess(sumF) { sum =>
Files.write(Paths.get(uploadFile.getAbsolutePath), sum.toString.getBytes)
logger.info(StatusCodes.OK + "Successfully completed fileUpload ")
complete(s"Successfully completed fileUpload") }}
}