Spring MultipartFile <form> 방식의 파일 업로드

Sunset·2022년 7월 25일
1

spring

목록 보기
1/1

uploadForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="uploadFormAction" method="post" enctype="multipart/form-data">
	<input type="file" name="uploadFile" multiple>
	<button>Submit</button>
	</form>
</body>
</html>


실제 전송될 경로인 action="uploadFormAction"로 지정해주고, enctype속성값을 "multipart/form-data"로 지정해주는게 중요합니다.
<input type="file">의 경우 최근 브라우저에서는 'multiple'로 지정해주면 여러 개의 파일을 업로드 할수 있다고 합니다.(브라우저 마다 지원 여부 달라짐)



UploadController.java

package org.zerock.controller;

import java.io.File;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;

import lombok.extern.log4j.Log4j;

@Controller
@Log4j
public class UploadController {

  	String uploadFolder = "/Users/sky/eclipse-workspace/ex05/upload/temp"; //저장 될 폴더경로
	
	@PostMapping("/uploadFormAction")
	public void uploadFormPost(MultipartFile[] uploadFile, Model model) {
  
		for(MultipartFile multipartFile : uploadFile) {
			log.info("----------------------------");
			log.info("Upload File Name: " + multipartFile.getOriginalFilename());
			log.info("Upload File Size: " + multipartFile.getSize());
			
			File saveFile = new File(uploadFolder, multipartFile.getOriginalFilename());
			
			try {
				multipartFile.transferTo(saveFile);
			}catch(Exception e) {
				log.error(e.getMessage());
			}
		}
	}
}

MultipartFile의 메서드

메서드설명
String getName()파라미터의 이름 <input> 태그의 이름
String getOriginalFilename()업로그되는 파일의 이름
boolean isEmpty()파일이 존재하지 않는 경우 true
long getSize()업로드되는 파일의 크기
byte[] getBytes()byte[]로 파일 데이터 반환
inputStream getInputStream()파일데이터와 연결된 inputStream을 반환
transferTo(File file)파일의 저장

파일 처리는 스프링에서 제공하는 MultipartFile이라는 타입을 이용하여 파일을 전송합니다.
파일저장은 위에 나온 TransferTo()를 사용하여 저장을 할수 있습니다.

파일을 넣고 전송버튼을 누릅니다.

uploadForm.jsp 화면을 구현하지 않았으므로 404에러 코드가 뜹니다.


로그와 지정한 폴더로 파일이 들어간 모습을 볼수 있습니다.
코드로 배우는 스프링 웹프로젝트를 실습하면서 기록 해 둡니다.

0개의 댓글