파일 업로드하는 방법에 대해 학습해보자.
pom.xml에 commons-fileupload 라이브러리를 추가한다.
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
그리고 파일이 임시로 업로드 될 폴더를 C하위에 upload/tmp로 생성한다.
그리고 servlet-context 파일에 아래와 같은 설정을 추가한다.
<!-- File upload configuration -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="defaultEncoding" value="utf-8"></beans:property>
<!-- 1024 * 1024 * 10 bytes 10MB -->
<beans:property name="maxUploadSize" value="104857560"></beans:property>
<!-- 1024 * 1024 * 2bytes 2MB -->
<beans:property name="maxUploadSizePerFile" value ="2097152"></beans:property>
<beans:property name="uploadTempDir" value="file:/C:/upload/tmp"></beans:property>
<beans:property name="maxInMemorySize" value="10485756"></beans:property>
</beans:bean>
@GetMapping("/exUpload")
public void exUpload() {
log.info("/exupload..........");
}
// 해당 내용 작성 후 jsp파일도 작성
<form action="/sample/exUploadPost" method="post" enctype="multipart/form-data">
<div>
<input type='file' name='files'>
</div>
<div>
<input type='file' name='files'>
</div>
<div>
<input type='file' name='files'>
</div>
<div>
<input type='file' name='files'>
</div>
<div>
<input type='file' name='files'>
</div>
<div>
<input type='submit' value="제출">
</div>
</form>
form action태그를 exUploadPost로 작성했으니 post방식의 맞는 메소드를 추가한다
@PostMapping("/exUploadPost")
public void exUploadPost(ArrayList<MultipartFile> files) {
files.forEach(file -> {
log.info("--------------");
log.info("name: " + file.getOriginalFilename());
log.info("size: "+ file.getSize());
});
}
제대로 업로드되어 ArrayList의 files가 데이터를 전달받고 이를 출력해주는 화면이다.
ServletConfig클래스에서,
mutipartResolver를 빈으로 등록하고 CommonsMultipartResolver 객체의 getResolver을 작성한다.
최종 업로드는 byte[]처리를 해야한다. 나중에 다뤄볼 예제.