항상 다른 사람이 세팅해준것만 사용하다보니, 파일업로드한 이미지도 불러오는 것에 너무 애를 먹었다.
그래서 파일업로드를 한 뒤, 스프링MVC 설정을 통해 화면에서 보여주는 과정을 정리해보려 한다.
1. 정적 리소스
SpringMvcConfiguration.java를 만들어 준 뒤,
WebMvcConfigurer 를 implements해준 뒤, addResourceHandlers method를 오버 라이딩하고 리소스 등록 및 핸들러를 관리하는 객체인 ResourceHandlerRegistry를 통해 리소스의 위치와 리소스와 매칭 될 url을 설정을 설정 한다.
/**
* static resources
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
if("local".equals(deploy)) {
registry.addResourceHandler( uploadResourcePath + "**").addResourceLocations("file:///" + fileRootPath); //data 말고 다른 이름으로 해줘도 된다.
}
}
//application.properties 설정
file.root.path = D:/upload/
upload.resource.path = /upload/
업로드를 하면 현재 이렇게 내 컴퓨터에 저장이 된다.
* addResourceHander
서버가 /upload/ 하위의 경로로 모든 파일을 읽을 수 있게 한다.
*addResourcelocations
윈도우에서 해줘야 하는것이고 설정을 "file:///" 이렇게 슬러시가 3개 있는게 중요하다. 그리고 그 뒤엔 진짜 upload.resource.path와 같은 이름으로 설정을 해주면 된다.
그리고 jsp에서 파일을 불러올 땐, /upload/20230816/6a817877-234d-4ad9-9ed9-fd6125aaceae_설윤1.png
이렇게 불러오면 된다.
/upload/로 시작하게 되면 upload하위에 있는 모든 파일들에 해당되어 경로와 이름만 맞으면 불러와 진다.
<img class="card-img-top" src="${item.filepath}${item.systemFilename}" alt="..." />
DB는 이렇게 되어있다.
참고자료: Spring Boot 프로젝트 외부 경로 파일 접근하기 addResourceHandlers (tistory.com)
'Dev.BackEnd > Spring & Spring Boot' 카테고리의 다른 글
[스프링부트] 알림 기능(실시간 알림 받기) SSE사용 (feat lastEventId) (0) | 2023.10.07 |
---|---|
SpringBoot: @RequestParam vs @RequestBody이해하기 (0) | 2023.09.20 |
[스프링부트] Scheduled을 이용해 일정시간 또는 특정시간에 코드가 실행되게 해보자 (0) | 2023.08.25 |
[Spring boot] 웹페이지 tiles를 사용해서 간편하게 레이아웃 설정하기 (0) | 2023.08.24 |
파일업로드 이후 파일이미지 조정을 위한 섬네일 만들기 (0) | 2023.08.19 |