JAVA

스프링(Spring) 파일업로드 구현하기

KSJ IT 2021. 1. 19. 18:13

유익하셨다면 광고 한번씩만 클릭해주시면 감사하겠습니다.

반응형

파일업로드를 구현하기 위해서는 먼저 설정을 해줘야한다.

 

자바프로젝트의 pom.xml 에 아래의 dependency를 추가해준다.

 <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.2</version>
</dependency>
         
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

 

그 후 두번째로 context-common.xml의 파일에 bean을 추가해준다.

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  	<property name="maxUploadSize" value="100000000" /> <!-- 100MB -->
</bean>

 

그 다음으로 해줘야하는것이 JSP 소스이다.

제일 마지막속성인 multiple속성 같은경우에 다중파일업로드를 할것이 아니라면 삭제해도 좋다.

<form name="uploadForm" action="fileUpload.do" method="post" enctype="multipart/form-data">
    <input type="file" name="uploadFile" multiple="multiple" />
    <input type="submit" value="저장" />
</form>

 

마지막으로 컨트롤러의 소스이다.

@RequestMapping(value="uploadFile.do")
public void requestupload1(MultipartHttpServletRequest mrequest) {

    MultipartFile mf = mrequest.getFile("uploadFile");

    String absolutePath = "C:\\upload\\"; // 업로드될 파일 경로

    String originFileName = mf.getOriginalFilename(); // 원본 파일 명
    long fileSize = mf.getSize(); // 파일 사이즈
    String fileType = mf.getContentType(); // 파일 종류
	
    byte[] buffer = new byte[8192];
    int bytesRead = 0;
    InputStream is = null;
    OutputStream bos = null;
    
    try{
    	is = mf.getInputStream();
        
        // 업로드 디렉토리 체크 후 없으면 생성..
        file dirPath = new File(absolutePath);
        if(!dirPath.exists()){
        	dirPath.mkdirs();
        }
        
        File newFile = new File(absolutePath + File.separator + originFileName);
        
        bos = new FileOutputStream(newFile);
        while((bytesRead = is.read(buffer, 0, 8192)) != -1){
        	bos.write(buffer,0,bytesRead);
        }
        bos.close();
        is.close();
        
    }catch(Exception e){
    	e.printStackTrace();
    }finally{
    	if(bos != null){
        	try{
                bos.close();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
        
        if(is != null){
        	try{
                is.close();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
        
        
    }

}

 

이로써 파일 업로드 소스를 구현하는게 끝이났다.

반응형