728x90
반응형
안녕하세요, 개발자 여러분! 오늘은 스프링 부트 프로젝트에서 파일 업로드 기능을 구현하기 위한 핵심 설정에 대해 알아보겠습니다. 특히, application.properties 또는 application.yml 파일에 작성하는 아래 설정 코드를 자세히 분석하고, 실제 업로드 경로를 설정하는 방법까지 상세히 설명드리겠습니다.
spring.servlet.multipart.enabled=true
spring.servlet.multipart.location=C:\\upload
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=30MB
org.zerock.upload.path=C:\\upload
1. spring.servlet.multipart.enabled=true
- 의미: 스프링 부트 애플리케이션에서 멀티파트 요청 처리 기능을 활성화합니다. 파일 업로드는 일반적으로 웹 폼에서 multipart/form-data 형식으로 데이터를 전송하는데, 이 설정을 통해 스프링이 해당 요청을 처리할 수 있도록 준비합니다.
- 기본값: true (스프링 부트 2.0 이상)
- 주의: 파일 업로드 기능을 사용하지 않을 경우, 불필요한 리소스 낭비를 막기 위해 false로 설정할 수 있습니다.
2. spring.servlet.multipart.location=C:\\upload
- 의미: 업로드된 파일이 임시로 저장될 디렉토리 경로를 지정합니다. 설정된 경로에 디렉토리가 존재하지 않으면 자동으로 생성됩니다.
- 기본값: 운영체제에 따라 다름 (예: /tmp 또는 C:\Temp)
- 중요: 실제 서비스 환경에서는 보안 및 관리 편의성을 위해 별도의 업로드 전용 디렉토리를 생성하고, 해당 경로를 명시적으로 설정하는 것이 좋습니다. 예를 들어, D:\uploads 또는 /var/www/uploads 등의 경로를 사용할 수 있습니다.
3. spring.servlet.multipart.max-file-size=10MB
- 의미: 단일 파일의 최대 업로드 허용 크기를 설정합니다.
- 기본값: 1MB
- 활용: 서비스 특성에 맞게 적절한 값으로 조정해야 합니다. 예를 들어, 대용량 파일 업로드가 필요한 경우에는 10MB, 100MB 등으로 값을 늘릴 수 있습니다.
4. spring.servlet.multipart.max-request-size=30MB
- 의미: 단일 요청으로 업로드되는 전체 파일들의 최대 허용 크기를 설정합니다.
- 기본값: 10MB
- 활용: 여러 파일을 동시에 업로드하는 경우, 각 파일 크기의 합이 이 값을 초과하면 업로드가 실패합니다.
5. org.zerock.upload.path=C:\\upload
- 의미: 실제 파일이 저장될 디렉토리 경로를 사용자 정의 프로퍼티로 설정합니다. 이 값은 애플리케이션 내에서 @Value("${org.zerock.upload.path}") 등으로 주입받아 사용할 수 있습니다.
- 활용: 업로드된 파일을 특정 경로로 이동하거나, 파일 경로를 데이터베이스에 저장하는 등 다양한 용도로 활용할 수 있습니다.
주의: 위 설정에서 C:\\upload 경로는 윈도우 환경을 기준으로 합니다. macOS 또는 리눅스 환경에서는 /Users/yourname/upload 또는 /var/www/upload와 같이 적절한 경로로 변경해야 합니다.
보안 강화: 실제 서비스 환경에서는 업로드 디렉토리에 대한 웹 접근을 제한하고, 파일 확장자 및 MIME 타입 검증 등 추가적인 보안 조치를 적용하는 것이 좋습니다.
'Coding 공부 > IntelliJ' 카테고리의 다른 글
[SpringBoot_JPA] 엔티티 어노테이션 @OneToMany, @Builder.Default, @BatchSize (0) | 2024.06.13 |
---|---|
[SpringBoot_MariaDB] 파일 업로드 코드 추가 (0) | 2024.06.11 |
[IntelliJ_SpringBoot] 스프링 부트에서 세션을 사용한 로그인 정보 저장 (10단계 + 예제 코드) (0) | 2024.05.31 |
[IntelliJ_SpringBoot] consumes, HTML <form>태그 기본 속성 (0) | 2024.05.31 |
[IntelliJ_Springboot] Springboot 자원 자동 서빙, 리다이렉트 vs 뷰 반환 방식 (0) | 2024.05.29 |
댓글