URL을 통해 이미지를 다운로드 해보자
1. ExampleController
1: @ApiOperation(value = "이미지 다운로드")
2: @GetMapping(value = "/download/image")
3: public ResponseEntity<Resource> downloadImage(
4: @ApiParam(value = "다운받을 이미지 URL", required = true) String url) {
5: return exampleFacade.downloadImage(url);
6: }
1 스웨거에 표시
2 GetMapping을 사용 (Post,Get,Put,Delete Mapping등은 후에 포스팅하겠습니다)
2. ExampleFacade
@Autowired
ResourceLoader resourceLoader;
1: public ResponseEntity<Resource> downloadImage(String url) {
2: String imageUrl = url
3: Resource resource = resourceLoader.getResource(imageUrl);
4: HttpHeaders headers = new HttpHeaders();
5: headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + “image.png");
6: return new ResponseEntity<>(resource, headers, HttpStatus.OK);
7: }
1 return은 ResponseEntity<Resource> 로 리소스를 리턴하는 형식으로
3 getResource()를 리소스 객체를 반환받고
4,5 등을 통해 ReponseEntity 의 Header를 정의한다
Resource 추상화 (org.springframework.core.io.Resource)
스프링 내부에서 많이 사용하는 인터페이스로, java.net.URL을 추상화한 인터페이스이다.
리소스를 읽어오는 기능을 Resource 를 통해 한 이유는
클래스 패스 기준으로 리소스를 읽어오는 기능의 부재와,
새로운 핸들러를 만들어 사용하는것이 복잡하며 ServeltContext를 기준으로 상대 경로를 읽어오는 기능이 없다.
ResourceLoader란 무엇인가
- 리소스를 읽어오는 기능을 제공하는 인터페이스이다
1. 파일 시스템에서 읽어오기
FileSystemResource
2. 클래스패스에서 읽어오기
지원하는 접두어가 classpath: 일 때, 이를 기준으로 리소스를 읽어들인다.
3. URL로 읽어오기
4. 상대/절대 경로로 읽어오기
'SpringBoot' 카테고리의 다른 글
[Spring Boot] @NotNull, @NotEmpty, @NotBlank (0) | 2021.03.10 |
---|---|
[Spring boot] 서버 띄울때 UTC 시간으로 띄우기 (0) | 2021.02.01 |
[Java] @Deprecated (0) | 2020.10.27 |
QueryDSL like, contains (0) | 2020.10.27 |
[Intellij] test events were not received (0) | 2020.08.10 |