[Spring] 19. 게시물 파일 업로드 설정개발자가 되기까지 (2023.08.16~2024.04.15)/[Spring] Basic Web2024. 1. 19. 22:34
Table of Contents
먼저, 업로드한 파일을 본인이 저장하고 싶은 경로에 폴더를 생성한다.
그 후, config package에 코드를 추가한다.
pom.xml는 파일 업로드에 관한 설정을 처음에 미리 해주었으므로 추가적인 작업은 필요치 않다.
WebConfig.java
package com.basicWeb.www.config;
import javax.servlet.Filter;
import javax.servlet.MultipartConfigElement;
import javax.servlet.ServletRegistration.Dynamic;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer{
// ... (기존 코드)
@Override
protected void customizeRegistration(Dynamic registration) {
String uploadLocation = "파일을 저장할 폴더 경로";
int maxFileSize = 1024 * 1024 * 20;
int maxReSize = maxFileSize * 2;
int fileSizeThreshold = maxFileSize;
MultipartConfigElement multipartConfig =
new MultipartConfigElement(uploadLocation, maxFileSize, maxReSize, fileSizeThreshold);
registration.setMultipartConfig(multipartConfig);
}
}
customizeRegistration Method 변수의 의미는 다음과 같다.
maxFileSize | 최대 허용 파일 크기가 바이트 단위로 설정 |
maxReSize | 사용자가 사진을 업로드할 때, 그 사진의 크기를 줄이거나 늘리는 작업을 의미하며 이 때, 최대 허용 크기가 바이트 단위로 설정 |
fileSizeThreshold | 파일 크기가 이 값보다 크다면 메모리에 저장하는데 사용되는 임계값을 설정 |
위에서 설정한 값들을 사용하여 MultipartConfigElement 객체를 생성하고,
이를 Servlet registration 객체(Dynamic registration)에 설정
ServletConfiguration.java
package com.basicWeb.www.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
@EnableWebMvc
@ComponentScan(basePackages = {"com.basicWeb.www.controller", "com.basicWeb.www.handler"})
public class ServletConfiguration implements WebMvcConfigurer {
// resources 경로 설정 / 나중에 파일 업로드 경로 설정 추가
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
registry.addResourceHandler("/upload/**").addResourceLocations("file:///파일을 저장할 폴더 경로\\");
}
// ... (기존 코드)
@Bean(name = "multipartResolver")
public MultipartResolver getMultipartResolver() {
StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
return multipartResolver;
}
}
addResourceHandlers() Method는 이미지, CSS와 같은 정적 자원의 경로를 설정하는 Method
/upload/** 경로는 파일 업로드를 위한 디렉토리를 나타낸다.
file:/// 은 파일 시스템에 접근하는 프로토콜이며,
업로드 된 파일들을 업로드한 날짜별로 저장하고 싶어서 경로 뒤에 \\을 붙여두었다.
MultipartResolver() Method는 파일 업로드 요청을 처리하고, 업로드된 파일들을 알맞게 처리하는 Method
[Spring] 19. 게시물 파일 업로드 설정
(다음 게시물 예고편)
[Spring] 20. 게시물 파일 업로드 기초 MVC 구성
728x90
@rlozlr :: 얼렁뚱땅 개발자
얼렁뚱땅 주니어 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!