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

 

성공적으로 이미지를 불러온 것을 확인 할 수 있습니다.