Files
luminic-back/src/main/kotlin/space/luminic/budgerapp/services/StaticService.kt
2025-03-03 10:38:07 +03:00

29 lines
1.0 KiB
Kotlin

package space.luminic.budgerapp.services
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.reactor.awaitSingleOrNull
import kotlinx.coroutines.withContext
import org.springframework.http.codec.multipart.FilePart
import org.springframework.stereotype.Service
import space.luminic.budgerapp.configs.StorageConfig
import java.nio.file.Files
import java.nio.file.Paths
import java.util.*
@Service
class StaticService(private val storageConfig: StorageConfig) {
suspend fun saveFile(spaceId: String, wishListItemId: String, filePart: FilePart): String {
val folder = Paths.get(storageConfig.rootLocation.toString(), spaceId, "wishlists", wishListItemId)
withContext(Dispatchers.IO) {
Files.createDirectories(folder)
}
val filename = UUID.randomUUID().toString().split("-")[0] + "." + filePart.filename().split(".").last()
val filePath =
folder.resolve(filename)
filePart.transferTo(filePath).awaitSingleOrNull()
return filePath.toString()
}
}