spring-web-modules/api/src/main/kotlin/com/cubetiqs/web/modules/file/FileStorageFactory.kt
Sambo Chea fd12704bd5
Some checks failed
continuous-integration/drone/push Build is failing
Add zipper for zip all files with file local provider
2022-04-21 15:09:01 +07:00

45 lines
1.2 KiB
Kotlin

package com.cubetiqs.web.modules.file
import org.springframework.web.multipart.MultipartFile
import java.io.File
object FileStorageFactory {
private var provider: FileStorageProvider? = null
fun setProvider(provider: FileStorageProvider) {
FileStorageFactory.provider = provider
}
fun getProvider(): FileStorageProvider {
return provider ?: throw IllegalStateException("FileStorageProvider is not set")
}
fun store(file: File): FileResponse {
return getProvider().store(file)
}
fun store(file: MultipartFile): FileResponse {
val tempPath = System.getProperty("java.io.tmpdir") ?: if (System.getProperty("os.name").lowercase()
.contains("win")
) "C:\\Windows\\Temp" else "/tmp"
val temp = File("$tempPath/${file.originalFilename}")
file.transferTo(temp)
return store(temp)
}
fun delete(fileName: String) {
getProvider().delete(fileName)
}
fun get(fileName: String): FileResponse {
return getProvider().get(fileName)
}
fun zipAll(): ByteArray? {
if (getProvider() is FileStorageZipper) {
return (getProvider() as FileStorageZipper).zip(null)
}
return null
}
}