본문 바로가기

웹개발 - Back 관련/Spring-DB

[Kotlin Spring] HTTP 헤더 Content - Disposition 설정 - 문자열이 아닌 builder 패턴으로 사용하기

Topic -  

val contentDisposition = "attachment; filename=\"${myFileName}\""

김영한님 Spring MVC 강의 2편의 파일 다운로드 부분 학습중에 위와 같이 HTTP Header - Content - Disposition 을 설정하는 것을 보았는데, 위 처럼 문자열로 작성하는 것은 불편하며 실수하기 쉬워 보인다. Spring에서 제공하는 builder 패턴을 활용하여 실수할 위험이 적은 코드로 작성해보자.

 

 


 

 

 

 

적용 방법
    @GetMapping("/attach/{itemId}")
    fun downloadFile(@PathVariable itemId : Long): ResponseEntity<Resource> {
       
       ... ( db에서 itemId 에 해당하는 file(item) 찾기. )
       
        item?.let {
            
            ...
            
            val contentDisposition = ContentDisposition
            	.attachment()
                .filename(uploadFileName,StandardCharsets.UTF_8)
                .build()
                .toString()
            
            return ResponseEntity
            	.status(HttpStatus.OK) // .ok() 로도 작성 가능.
                .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
                .body(파일정보)

        }?: throw MalformedURLException()

    }

 

 

 

 

 

 

 

 

[Comment]

1. 여름 휴가, 사무실 이사, 예비군 겹쳐서 7월 동안 쉬기만 하다보니까 나태해진 것 같다. 다시 강의 보면서 궁금한 것들 좀 찾아보면서 공부 해야겠다 ...

 


[Reference]