금융에 대한 모든 것

pom.xml에 라이브러리 입력

 파일 업로드에 필요한 라이브러리들을 pom.xml 입력합니다.

 

pom.xml

<!-- Apache Commons FileUpload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<!-- Apache Commons IO -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

 

객체 설정

root-context.xml

<!-- MultipartResolver 설정 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize" value="100000000" />
  <property name="maxInMemorySize" value="100000000" />
</bean>

 파일을 받을  있도록 해주는 MultipartResolver 빈을 주입해 줍니다. maxUploadSize 속성으로 업로드될 파일의 최대 크기를 설정할  있고 maxInMemorySize 메모리에 유지되도록 허용할  있는 최대 용량을 설정할  있습니다.

 

jsp 화면

 파일을 전송할 jsp화면입니다

 

예시

<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" value="제출"/>
</form>

파일 전송은 post 형식으로만 전송이 되며 enctype multipart/form-data 설정합니다. 그리고 file 올릴 input 태그를 입력합니다.

 

스프링 시큐리티를 사용할 경우

<form:form action="/upload?${_csrf.parameterName}=${_csrf.token}" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" value="제출"/>
</form:form>

스프링 시큐리티를 사용하고 있는 경우에는 요청 url 다음에 "?${_csrf.parameterName}=${_csrf.token}" 붙여주어야 해당 url 요청할  있습니다.

 

컨트롤러 파일

form 태그의 요청을 받고 실행되는 컨트롤러 파일의 메서드입니다.

 

예시

@RequestMapping(value = "/upload" , method = RequestMethod.POST)
public String upload(MultipartHttpServletRequest mtf) throws Exception {
        // 파일 태그
        String fileTag = "file";
            // 업로드 파일이 저장될 경로
        String filePath = "C:\\temp\\";
        // 파일 이름        
        MultipartFile file = mtf.getFile(fileTag);
        String fileName = file.getOriginalFilename();
        // 파일 전송
        try {
            file.transferTo(new File(filePath + fileName));
        } catch(Exception e) {
            System.out.println("업로드 오류");
        }
                         ...
}

form 태그로 전송된 파일 정보는 MultipartHttpServletRequest라는 형태로 받게 되므로 메서드 파라미터로 넣어 줍니다. 그리고 fileTag라는 변수를 만들어서 form 태그에서 입력한 name 속성의 값을 입력합니다. filePath 변수에는 업로드한 파일이 저장될 경로를 입력합니다. 그런 다음 MultipartFile 객체를 만들어 전송받은 파일 정보를 저장하고 getOriginalFilename 메서드로 파일 이름을 fileName변수에 저장합니다. 마지막으로 transforTo 메서드에 업로드 파일의 전체 경로가 입력된 file 객체를 매개변수로 전달하면 업로드가 완료됩니다.

 

 

반응형