29 lines
1.0 KiB
Kotlin
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()
|
|
}
|
|
|
|
} |