2025-04-28
multipart/form-data
POST
GET
pom.xml
μμ‘΄μ± μ€μ νμΌ μ λ‘λλ₯Ό μν΄ Apache Commons λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν©λλ€.
<!-- νμΌ μ
λ‘λ μ§μ (commons-fileupload, commons-io) -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
WebMvcConfig
)servlet-context.xml
μ λ체νλ μ€μ ν΄λμ€MultipartResolver
λΉ λ±λ‘@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(20971520); // 20MB
multipartResolver.setMaxUploadSizePerFile(20971520); // 20MB
multipartResolver.setMaxInMemorySize(20971520); // 20MB
return multipartResolver;
}
multipart/form-data
μ€μ νμ<form action="${pageContext.request.contextPath }/file/upload" method="post" enctype="multipart/form-data">
<input type="file" name="files" multiple/>
<button>μ μ‘</button>
</form>
λ°λ³΅λλ ν΄λ μμ± λ° μ μ₯ λ‘μ§μ λ©μλλ‘ λΆλ¦¬νλ κ²μ΄ μ μ§λ³΄μμ μ 리ν©λλ€.
private String createUploadFolder() {
LocalDateTime now = LocalDateTime.now();
String folderName = now.format(DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss"));
String path = ROOT_PATH + File.separator + UPLOAD_PATH + File.separator + folderName + File.separator;
File dir = new File(path);
if (!dir.exists()) dir.mkdirs();
return path;
}
private void saveFiles(MultipartFile[] files, String path) {
for (MultipartFile file : files) {
try {
File fileObject = new File(path, file.getOriginalFilename());
file.transferTo(fileObject);
} catch (IOException e) {
log.error("νμΌ μ μ₯ μ€ν¨: " + file.getOriginalFilename(), e);
}
}
}
@PostMapping("/upload")
public String upload(@RequestParam("files") MultipartFile[] files) {
String path = createUploadFolder();
saveFiles(files, path);
return "file/upload";
}
@PostMapping("/upload_dto")
public String upload_dto(FileDto dto) {
String path = createUploadFolder();
saveFiles(dto.getFiles(), path);
return "file/upload";
}
multipart/form-data
μ MultipartResolver
μ€μ νμ.UUID
λ₯Ό νμ©νλ κ²μ΄ μμ .β¨ λ€μ΄λ‘λ κΈ°λ₯μ λ€μ ν¬μ€ν μμ μμΈν λ€λ£¨κ² μ΅λλ€!