묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

IntelliJ 파일 업로드 주의사항
Spring/Spring

IntelliJ 파일 업로드 주의사항

2022. 3. 16. 10:23

https://ssdragon.tistory.com/99

 

[Spring] 스프링에서 파일저장하기

https://ssdragon.tistory.com/82 [Spring] IntelliJ 파일 업로드 주의사항 @PostMapping("/filetest") public String addImage2(@RequestParam("Photo") MultipartFile uploadFile, HttpServletRequest request)..

ssdragon.tistory.com

파일 저장은 위 게시글을 살펴보자.

 

 

@PostMapping("/filetest")
    public String addImage2(@RequestParam("Photo") MultipartFile uploadFile,
                            HttpServletRequest request) {
        String fileName = uploadFile.getOriginalFilename();
        String filePath = request.getSession().getServletContext().getRealPath("/");
        try {
            uploadFile.transferTo(new File(filePath + fileName));
            System.out.println("이미지 파일 저장 완료");
        } catch (IllegalStateException | IOException e) {
            e.printStackTrace();
        }
        return " 파일 저장 완료";
    }

이런 식으로 MultipartFile 타입으로 파일을 받고, HttpServletRequest 타입의 request도 같이 받아서 파일을 저장할 것이다.
파일의 getOriginalFilename() 으로 파일명을 받아서 fileName에 저장하고 이 다음 파일 경로를 받는 부분이 중요하다.

 

 

request.getSession().getServletContext().getRealPath("/") 경로는?

내 프로젝트/src/main/webapp 파일 경로이다.
즉, 저 경로에 webapp 파일이 없다면 에러가 나거나 톰캣의 임시폴더에 저장되게 된다.
/private/var/folders/1v/n5kd8p912jbcb_q29nycvddm0000gn/T/tomcat-docbase.8080.2357231394449395945/
위는 맥북 IntelliJ의 톰캣 임시경로이다.
즉, 이러한 오류를 방지하려면 webapp 파일을 꼭 만들어줘야한다.

 


이렇게 webapp파일을 만드니까 정상적으로 파일이 업로드되는 것을 알 수 있다.

 

 

 

파일을 읽을 때 참고사항

Spring Boot 와 Thymeleaf 적용중이라면 기본적으로 static에서 파일을 읽게 된다. (css 또는 js 파일 등)
그래서 파일 업로드된 이미지파일을 불러올 때 경로 오류로 불러오지 않는 상황이 생길 수도 있다.
이 때는 정적 리소스에 접근해서 경로를 바꿔줘야한다.
application.properties 에서 다음과 같이 코드를 적어주자.

spring.mvc.static-path-pattern=/webapp/**​

 

이렇게 static 경로를 webapp 밑으로 된 파일들에서 찾는다고 변경한다는 코드이다.

 

 

저작자표시 비영리 (새창열림)

'Spring > Spring' 카테고리의 다른 글

스프링부트 시큐리티 - SNS 로그인과 SNS 회원가입  (0) 2022.03.17
스프링부트 시큐리티 - 일반 로그인과 회원가입  (0) 2022.03.17
Entity 보다는 DTO로 반환하자.  (0) 2022.03.16
스프링부트 View 환경설정  (0) 2022.01.24
스프링부트 라이브러리 살펴보기  (0) 2022.01.12
    'Spring/Spring' 카테고리의 다른 글
    • 스프링부트 시큐리티 - SNS 로그인과 SNS 회원가입
    • 스프링부트 시큐리티 - 일반 로그인과 회원가입
    • Entity 보다는 DTO로 반환하자.
    • 스프링부트 View 환경설정
    묠니르묘묘
    묠니르묘묘

    티스토리툴바