쌓고 쌓다
[스프링 부트] 파일 응답 및 이미지 출력, MIME 타입 확인 - 19 본문
서버에 업로드하여 존재하는 파일을 응답하는 방법이다.
먼저 이미지 출력은 <img> 태그를 사용한다.
<img th:each="imgFile : ${poster.imgFiles}" th:src="|/images/${imgFile.getStoreFileName()}|" width="200" height="200">
이제 요청에 맞춰 서버에서 파일을 응답해보자.
아래의 방법으로 간단히 이미지 파일을 응답하여 출력이 가능하다.
@ResponseBody
@GetMapping("/images/{filename}")
public Resource downloadImage(@PathVariable String filename) throws MalformedURLException {
return new UrlResource("file:" + fileStore.getFullPath(filename));
}
그러나 이 방법은 컨텐츠 헤더를 제대로 작성하지 않고 대충 던져도
웹 브라우저가 똑똑해서 알아서 컨텐츠 타입을 처리해서 보여주긴하나 타입을 지정해서 뿌려주자.
@GetMapping("/images/{filename}")
public ResponseEntity<Resource> downloadImage(@PathVariable String filename) throws IOException {
UrlResource resource = new UrlResource("file:" + fileStore.getFullPath(filename));
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_TYPE, Files.probeContentType(resource.getFile().toPath()))
.body(resource);
}
//System.out.println(Files.probeContentType(resource.getFile().toPath()));
Files.probeContentType(Path path)를 사용하여 파일의 컨텐츠 타입을 가져올 수 있다.
fullPath는 다음과 같다. /Users/lsm/Desktop/imgFolder/7b0bd15b-664a-4e0a-a2fd-3db86bf4bed7.gif
컨텐츠 타입까지 지정해주지 않고 POSTMAN으로 GET요청시
컨텐츠 타입 지정 후
동작 결과
'프로그래밍 > spring' 카테고리의 다른 글
[스프링 부트] 게시글 삭제시 첨부파일 삭제 - 20 (0) | 2023.08.07 |
---|---|
핸들러 매핑과 핸들러 어댑터 이해하기 (0) | 2023.08.06 |
Spring MVC 구조 (0) | 2023.08.05 |
[스프링 부트] 파일 다운로드 - 18 (0) | 2023.08.04 |
List<MultipartFile> 빈 파일 문제, MultipartFile null 체크 (0) | 2023.08.03 |
Comments