package Ġde . con pin ion . sc . controller Ċ Ċ import Ġde . con pin ion . sc . Upload Ċ import Ġde . con pin ion . sc . composer . Composer Service Ċ import Ġorg . jetbrains . ktor . locations . post Ċ import Ġorg . jetbrains . ktor . request . Part Data Ċ import Ġorg . jetbrains . ktor . request . contentType Ċ import Ġorg . jetbrains . ktor . request . is Multipart Ċ import Ġorg . jetbrains . ktor . request . receive Multipart Ċ import Ġorg . jetbrains . ktor . response . respond Write Ċ import Ġorg . jetbrains . ktor . routing . Route Ċ import Ġjava . io . File Ċ Ċ fun ĠRoute . upload ( composer Service : ĠComposer Service ) Ġ{ ĊĠĠĠ Ġpost < Upload > Ġ{ Ġdesc Ġ-> ĊĊĠĠĠĠĠĠĠ Ġcall . respond Write Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . request . is Multipart ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmultipart Ġ= Ġcall . receive Multipart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultipart . parts . forEach Ġ{ Ġpart Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ln ( when Ġ( part ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPart Data . File Item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġpart . original FileName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile . create TempFile (" composer ", Ġ". zip ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpart . stream Provider (). use Ġ{ Ġits Ġ-> Ġfile . output Stream (). buffered (). use Ġ{ Ġits . copy To ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposer Service . update Static Part ( desc , Ġfilename , Ġfile . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" OK " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" No Ġfile Ġin Ġrequest Ġfound ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpart . dispose ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ln (" Not Ġa Ġmultipart Ġrequest ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ