웹개발 - Back 관련/Spring-DB
[Kotlin Spring] HTTP 헤더 Content - Disposition 설정 - 문자열이 아닌 builder 패턴으로 사용하기
jun098
2024. 7. 30. 15:30
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월 동안 쉬기만 하다보니까 나태해진 것 같다. 다시 강의 보면서 궁금한 것들 좀 찾아보면서 공부 해야겠다 ...