작성한 질문수
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
예제로 구현하는 파일 업로드, 다운로드
해결된 질문
작성
·
817
0
강의내용중 31:24초 부분에 해당하는 질문입니다.
다른 사이트 이미지를 마우스 우클릭후, '새탭으로 이미지 열기'로 보면 제대로 이미지가 새탭으로 출력이되서 보이는데,
이 프로젝트 코드는 새 탭으로 이미지 열기를 사용하는데
31:20초 /items/1 경로의 이미지처럼 나오지않고
문자형태로 출력이되는지 궁금합니다.
또한 이처럼 31:24초처럼 이미지가 문자형태로 출력되지 않고 다른사이트(구글,네이버)처럼 새탭으로 이미지를 열어도 정상적으로 이미지가 출력되게 하기위해선 어떻게 해야하나요?
답변 1
3
안녕하세요. 김태홍님
Q: 31:20초 /items/1 경로의 이미지처럼 나오지않고...
-> 응답시 content-type을 image/png와 같이 이미지로 정확하게 지정해주시면 됩니다.
감사합니다.
김영한님 답변을 참조하여 코드를 작성해보았습니다.
v1. png 이미지 전용
@ResponseBody @GetMapping(value = "/images/{filename}", produces = MediaType.IMAGE_PNG_VALUE) public Resource downloadImageV1(@PathVariable String filename) throws MalformedURLException { return new UrlResource("file:" + fileStore.getFullPath(filename)); }
참조 : https://lazymankook.tistory.com/74
v2. 모든 Content-Type 사용
@GetMapping("/images/{filename}") public ResponseEntity<Resource> downloadImageV2(@PathVariable String filename) throws IOException { String fullPath = fileStore.getFullPath(filename); MediaType mediaType = MediaType.parseMediaType(Files.probeContentType(Paths.get(fullPath))); UrlResource resource = new UrlResource("file:" + fullPath); return ResponseEntity.ok() .header(HttpHeaders.CONTENT_TYPE, mediaType.toString()) .body(resource); }
김영한님 답변을 참조하여 코드를 작성해보았습니다.
v1. png 이미지 전용
참조 : https://lazymankook.tistory.com/74
v2. 모든 Content-Type 사용