JAVA Basic 강의자료] 멀티 파일 업로드
JAVA Basic 강의자료] 멀티 파일 업로드
실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.
멀티 파일 업로드
<소스코드>
JavaBeans에 List형식으로 가지고 있음.
public class FileuploadCommand implements Serializable {
MultipartFile 프러퍼티를 가지고 있는 JavaBean 리스트
private static final long serialVersionUID = 1L;
private List<FileuploadItem> fileuploadItems;
public FileuploadCommand() {
fileuploadItems = new ArrayList<FileuploadItem>();
}
public List<FileuploadItem> getFileuploadItems() {
return fileuploadItems;
}
public void setFileuploadItems(List<FileuploadItem> fileuploadItems) {
this.fileuploadItems = fileuploadItems;
}
}
===================
FileUploadItem
public class FileuploadItem implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
//MultipartFile 정의
private MultipartFile file;
public FileuploadItem() {
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
// 생략(setter、getter)
}
================
JSP 작성
<h4>멀티 파일 업로드</h4>
<form:form modelAttribute="fileuploadCommand" action="${appUrl}/test/fileupload/multi.html" method="post" enctype="multipart/form-data">
<c:forEach items="${fileuploadCommand.fileuploadItems}" var="item" varStatus="itemStatus">
<p>
<form:input path="fileuploadItems[${itemStatus.index}].name" />
<form:errors path="fileuploadItems[${itemStatus.index}].name" cssClass="errors" />
<form:input path="fileuploadItems[${itemStatus.index}].file" type="file" />
<form:errors path="fileuploadItems[${itemStatus.index}].file" cssClass="errors" />
</p>
</c:forEach>
<input type="submit"/>
</form:form>
==================
Controller 작성
@Controller
@RequestMapping("/test/fileupload")
public class FileuploadController {
// command 의 초기객체 취득
@ModelAttribute("fileuploadCommand")
public FileuploadCommand createInitCommand() {
FileuploadCommand command = new FileuploadCommand();
return command;
}
// 초기값 설정
@RequestMapping(method=RequestMethod.GET)
public void setupForm(Model model) {
FileuploadCommand command = createInitCommand();
// 최대 3개까지 업로드
for(int i=0; i < 3; i++) {
command.getFileuploadItems().add(new FileuploadItem());
}
model.addAttribute("fileuploadCommand", command);
}
===========================
Controller 작성(계속)
// 멀티 파일 업로드
@RequestMapping(value="multi", method=RequestMethod.POST)
public ModelAndView doAction2(@ModelAttribute("fileuploadCommand") FileuploadCommand command,
BindingResult bindingResult) throws IllegalStateException, IOException {
// 바인드에러 발생시 처리
if(bindingResult.hasErrors()) {
ModelAndView mav = new ModelAndView();
mav.getModel().putAll(bindingResult.getModel());
return mav;
}
for(FileuploadItem item : command.getFileuploadItems()) {
MultipartFile file = item.getFile();
if(file.isEmpty()) {
continue;
}
File uploadFile = new File("d:/upload/", file.getOriginalFilename());
file.transferTo(uploadFile);
}
ModelAndView mav = new ModelAndView("/test/complete");
return mav;
}
}
===============
* 브라우저 표시(todo)/파일 사이즈 초과시 처리방법(todo)
'자바 > Java공부하기' 카테고리의 다른 글
JAVA Basic 강의자료] JSON/XML 데이터 송수신 (0) | 2016.10.07 |
---|---|
JAVA Basic 강의자료] REST 서비스 작성 (0) | 2016.10.07 |
JAVA Basic 강의자료] 단순한 파일 업로드 (0) | 2016.10.07 |
JAVA Basic 강의자료] Spring MVC 3.1+Servlet3.0 멀티파트 기능 준비 (0) | 2016.10.07 |
JAVA Basic 강의자료] CommonsFileUpload 준비 (0) | 2016.10.06 |