45 lines
1.2 KiB
Kotlin
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
|
|
}
|
|
} |