Kotlin

[Kotlin] Spring 리소스(Resource) 파일 읽어오기, 다운로드

nineDeveloper 2021. 8. 1.
728x90

https://freedeveloper.tistory.com/193?category=808728

 

Spring, Java 리소스(Resource) 파일 읽어오기, 다운로드

Spring, Java 리소스(Resource) 파일 읽어오기, 다운로드 Maven 또는 Gradle 기반 프로젝트는 /src/main/resources 디렉토리에 리소스 파일을 저장하도록 되어 있다 이 디렉토리에 위치한 파일들은 .jar 파일로

freedeveloper.tistory.com

일전에 Java 버전으로 개발했던 부분을 Kotlin 으로 컨버팅 하면서 기록 한다

리소스 파일 읽어오기

Java 버전과 거의 동일하다

javaClass.getResourceAsStream(PATH): resource 디렉토리 안에 있는 파일을 InputStream 형태로 반환 해준다

val fileName = "sampleUpload.xlsx"
val filePath = Paths.get("${File.separatorChar}file", fileName)
val resource: Resource =  InputStreamResource(javaClass.getResourceAsStream(filePath.toString()))

리소스 파일 다운로드 하기


리소스에 있는 엑셀 양식 다운로드 서비스 구현 예시

서비스 구현부

/**
 * Sample 엑셀 양식 다운로드
 * @return
 * @throws IOException
 */
@Throws(IOException::class)
fun getSampleExcelForm(): ResponseEntity<Resource> {
    val fileName = "sampleUpload.xlsx"
    // 리소스 파일 획득하기
    val filePath = Paths.get("${File.separatorChar}file", fileName)
    val resource: Resource =  InputStreamResource(javaClass.getResourceAsStream(filePath.toString()))
    return ResponseEntity.ok()
        .contentType(MediaType.APPLICATION_OCTET_STREAM)
        .cacheControl(CacheControl.noCache())
        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=$fileName")
        .body(resource)
}

컨트롤러 구현부

@Operation(summary = "Sample 엑셀 양식 다운로드")
@GetMapping("/excelform")
@Throws(IOException::class)
fun getSampleExcelForm(): ResponseEntity<Resource> = sampleExcelService.getSampleExcelForm()
728x90

댓글

💲 추천 글