2025-02-05





<!-- 스프링 첨부파일 관련 commons-fileupload 라이브러리 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.5</version>
</dependency>
<!-- 스프링 첨부파일 관련 commons-io 라이브러리 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- 스프링 설정과 관련된 파일 설정 공간 -->
<!-- 파일 업로드 관련 설정 작업 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxInMemorySize" value="10485760" /> <!-- 10MB -->
<property name="defaultEncoding" value="UTF-8" />
</bean>
</beans>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="gray">
<h3>파일 업로드 폼 페이지</h3>
<hr width="30%" color="gray">
<br> <br>
<%-- input type이 "file"이라면 method는 무조건 "post"방식으로 하고 enctype="multipart/form-data" 입력 --%>
<form method="post" enctype="multipart/form-data"
action="<%=request.getContextPath() %>/upload_ok.go">
<table border="1" width="400">
<tr>
<th>첨부파일 1</th>
<td><input type="file" name="file1"></td>
</tr>
<tr>
<th>첨부파일 2</th>
<td><input type="file" name="file2"></td>
</tr>
<tr>
<th>첨부파일 3</th>
<td><input type="file" name="file3"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="파일전송">
<input type="reset" value="다시작성">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
package com.spring.fileupload;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@Controller
public class UploadController {
@Autowired
private Upload upload;
@RequestMapping("upload.go")
public String upload() {
return "upload_form";
}
// MultipartHttpServletRequest : 첨부파일이 여러 개인 경우
@RequestMapping("upload_ok.go")
public String uploadOk(Model model, MultipartHttpServletRequest mRequest) {
if (this.upload.fileUpload(mRequest)) {
model.addAttribute("result", "파일 업로드 성공");
} else {
model.addAttribute("result", "파일 업로드 실패");
}
return "upload_result";
}
}
package com.spring.fileupload;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Iterator;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@Service
public class Upload {
public boolean fileUpload(MultipartHttpServletRequest mRequest) {
boolean isUpload = false;
String uploadPath = "D:\\NCS\\workspace(spring)\\12_FileUpload\\src\\main\\webapp\\resources\\upload\\";
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
Iterator<String> iterator = mRequest.getFileNames();
while (iterator.hasNext()) {
String uploadFileName = iterator.next();
System.out.println("uploadFileName >>> " + uploadFileName);
MultipartFile mFile = mRequest.getFile(uploadFileName);
// getOriginalFilename() : 업로드 되는 파일에서 확장자를 포함한 파일의 이름을 반환해주는 메서드.
String originalFileName = mFile.getOriginalFilename();
System.out.println("originalFileName >>> " + originalFileName);
// 실제로 폴더를 만들어 보자
// .......\\resources\\upload\\2025-02-05
String homeDir = uploadPath + year + "-" + month + "-" + day;
File path1 = new File(homeDir);
if (!path1.exists()) {
path1.mkdirs(); // 실제로 폴더를 만들어 주는 메서드
}
// 파일을 만들어 보자
String saveFileName = originalFileName;
// 파일명 중복 방지 작업
if (!saveFileName.equals("")) {
saveFileName = System.currentTimeMillis() + "_" + saveFileName;
File origin = new File(homeDir + "/" + saveFileName);
try {
// transferTo() : 실제로 파일 데이터를 지정한 폴더에 저장시키는 메서드
mFile.transferTo(origin);
isUpload = true;
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} // while 문 end
return isUpload;
}
}'Spring, Boot > 기초 내용 정리' 카테고리의 다른 글
| Spring(AOP)_01 (0) | 2025.02.06 |
|---|---|
| Spring(AOP)_00 (0) | 2025.02.06 |
| Spring(MyBatis)_04 (0) | 2025.02.05 |
| Spring(MyBatis)_03 (0) | 2025.02.05 |
| Spring(MyBatis)_02 (0) | 2025.02.05 |