SPRING BOOT
Spring Boot 프로젝트 외부 경로에 있는 파일 접근(addResourceHandlers)
topgon
2023. 6. 1. 16:22
WebMvcConfigurer interface를 상속받아 addResourceHandlers method를 오버 라이딩하고 리소스 등록 및 핸들러를 관리하는 객체인 ResourceHandlerRegistry를 통해 리소스의 위치와 리소스와 매칭 될 url을 설정한다.
- addResourceHandler : 리소스와 연결될 URL path를 지정합니다. (클라이언트가 파일에 접근하기 위해 요청하는 url)
localhost:8080/imagePath/** - addResourceLocations: 실제 리소스가 존재하는 외부 경로를 지정한다.
경로의 마지막은 반드시 " / "로 끝나야 하고, 로컬 디스크 경로일 경우 file:/// 접두어를 꼭 붙여야 한다.
이렇게 설정하면 클라이언트로부터 http://호스트 주소:포트/imagePath/testImage.jpg 와 같은 요청이 들어 왔을 때 /home/uploadedImage/testImage.jpg 파일로 연결된다.
@Configuration
public class XssConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
WebMvcConfigurer.super.addResourceHandlers(registry);
registry.addResourceHandler("/progress/**").addResourceLocations("file:///D:/project/HyREX/fileDir/upload/progress/");
}
위의 설정을 했을 때 progress/{ 파일 명 } 이 들어오면 해당 정적리소스를 화면에 보여준다.
controller에 따로 설정할 필요 없다
progress/test.png -> locations에 저장된 경로에 test.png를 가져온다.
위의 예시와 같이 http:// 호스트 주소:포트/progress/
addResourceLocations 지정한 경로 이후 추가 경로를 붙혀준다.
http://localhost:8080/progress/20230530/test01_50c36406-3db9-469d-9871-61d6f3376019.png
성공적으로 이미지를 불러온 것을 확인 할 수 있습니다.