Spring 파일 업로드

오의석·2022년 10월 20일

스프링

목록 보기
7/16

전체적인 흐름 및 API를 적었다.
1. servlet-context.xml에서 세팅을 해준다.

<!-- fileUpload -->
	<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<beans:property name="defaultEncoding" value="UTF-8"/>
		<beans:property name="maxUploadSize" value="52428800"/> 
		<beans:property name="maxInMemorySize" value="1048576"/> 
	</beans:bean>

이 설정을 통해 Multipart 기능을 사용할 수 있게 된다. (ex : MultipartFile)

  1. jsp 혹은 html 같은 페이지에서의 설정
<form id="form-register" method="POST" enctype="multipart/form-data" action="./write">// POST, multipart/form-data로 설정해야한다.
<input type="file" class="form-control border" name="upfile" multiple="multiple">
  1. 실제 Controller 내부에서 설정 방법
@PostMapping("/write")
public String write(BoardDto boardDto, @RequestParam("upfile") MultipartFile[] files, HttpSession session,
RedirectAttributes redirectAttributes) throws Exception {
//만약 multiple="multiple"을 설정안했으면 	@RequestParam("upfile") MultipartFile file 로 설정한다.

String today = new SimpleDateFormat("yyMMdd").format(new Date());			
String realPath = servletContext.getRealPath("/upload");
String saveFolder = realPath + File.separator + today;
File folder = new File(saveFolder);
if (!folder.exists())
	folder.mkdirs();
for (MultipartFile mfile : files) {
	String originalFileName = mfile.getOriginalFilename();
	if (!originalFileName.isEmpty()) {
		String saveFileName = UUID.randomUUID().toString() + originalFileName.substring(originalFileName.lastIndexOf('.'));
		mfile.transferTo(new File(folder, saveFileName));
	}
}

}
profile
끊임없이 나아가는 사람이 되어볼게요.

0개의 댓글