Spring,MyBatis 실무 과정 자료] 멀티 파일 업로드





Spring,MyBatis 실무 과정 자료] 멀티 파일 업로드


실무개발자를위한 실무교육 전문교육센터학원

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 “”;

    }

    

    // 생략(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;

        }

        




+ Recent posts