본문 바로가기

Dev.BackEnd/Spring & Spring Boot

Spring Boot 프로젝트 외부 경로 파일 접근하기

항상 다른 사람이 세팅해준것만 사용하다보니, 파일업로드한 이미지도 불러오는 것에 너무 애를 먹었다.

그래서 파일업로드를 한 뒤, 스프링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)